Data Science

pandas中选取行列终极用法

2019-01-29  本文已影响0人  waterchinap

pandas中如何取特定条件的行和/或特定条件的列一直很困扰,多次查文档,好象也没有一个很准确的总结。经过多天的尝试和学习,个人觉得现在是下一个统一结论的时候了。

通用方法

通用的方法就是用:
df.loc[]
例如:

df.loc[(Row_condition1) & (Row_condition2), : ] 
#这是通过一系列条件来选取行。
df.loc[:, (Col_condition1) & (Col_condition2)] 
#这是通过一系列条件来选取列。
df.loc[(Row_condition1) & (Row_condition2), (Col_condition1) & (Col_condition2)] 
#这是通过一系列条件来选取行和列。

简易方法

在选取行或列时,通常可以采取一些简易办法。如:

df['col1']   #正确,取出一个序列。
df['col1','col2']  #报错,错误用法。
df[('col1','col2')]  #报错,错误用法。
df[['col1','col2']]  #正确,取出一个dataframe子集

pandas里subset的逻辑刚接触确实有点混乱。比如一组方括号设计为可以条件选取行,但不能直接用索引选出一行或者多行。可同时一组方括号又可以用来取出一列(序列),但不能取出多列。而两组方括号设计为可以选取一列或者多列,但又不能条件选取列。
当然逻辑乱的主要是在简易方法,如果怕糊涂,那就永远用.loc或者.iloc方法。这好象也是pandas推荐的做法。多敲几下键盘吧!

上一篇 下一篇

猜你喜欢

热点阅读