pandas学习笔记

1. 关于DataFrame的sort_index说明

df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))

print df.sort_index(axis=1,ascending=False)

axis=1是指安装列的index来排序,ascending=False是只递减,否则递增
print df.sort_index(axis=0,ascending=False)

axis=1是指安装行的index来排序

2. DataFrame中的Selection by Label

如:df.loc[dates[0]],如果直接使用df[dates[0]]会报错

需要用到.loc方法

print df.loc['20130101':'20130102',['A','C']]

这种用户中,如果将'20130101':'20130102'改成0:2则会报错。觉得python在这个地方设计的不太合理,不能用index查找,只能用别名查找。

除了使用loc外,还可以使用at

3.前面说道使用loc有点不合理,是没有直接用index,对应的方法来了:

df.iloc[0:3,0:1]

这种方法可以选择0:3行,不包含第三行;然后选择其中的)0:1列,不包含第1列

如果使用

df.iloc[0:3][0:1],返回的是第一行

因为,其执行逻辑是df.iloc[0:3]返回原dataFrame的)0:3行为一个df,然后再取)0:1行(很怪异有木有)

而且,如果写成df.iloc[0:3][0:4]也不会报index out of range的错误,反正就是能取多少取多少:-)

所以,如果要指定index,需要使用

df.iloc[[1,2,4],[0,2]]

而不是

df.iloc[1,2,4],[0,2]

如果具体某个元素,可以使用  .iat

4. Boolean Indexing也挺好玩的

df[df.A >0]  选择A列中所有大于0的所有的行

df[df>0]       选择df中所有大于0的元素,其它的元素为NaN

可以使用isin来过滤元素

df2 = df.copy()
df2['E'] = ['one', 'one','two','three','four','three']
print df2[df2['E'].isin(['two','four'])]

选择‘E’列这在'two','four'中的列

 


 

posted on 2016-04-10 11:17  flyf  阅读(304)  评论(0)    收藏  举报

导航