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'中的列
浙公网安备 33010602011771号