Python pandas DataFrame根据特定条件选择行和列

时间:2019-03-01 20:09:55

标签: python pandas dataframe

我有以下内容:

  cl1 cl2 cl3 .... cln
0  aaa bbb ccc .... nnn
1  bbb aaa ccc .... nnn
2  xxx xxx xxx .... xxx

需要选择行,列的值(其中任何一个)。lower()=='aaa' 因此它是0和1行,输出应为:

   cl1 cl2 cl3 .... cln
0  aaa bbb ccc .... nnn
1  bbb aaa ccc .... nnn

我尝试了很多方法,但是所有方法都需要指定列名,但就我而言,我不知道列名。

因此,如果我知道列名,基本上可以进行类似的操作:

df.loc[~df['something1'].str.lower().str.strip().isin(['something2'])]

1 个答案:

答案 0 :(得分:2)

您可以使用的IIUC:

df[df.eq('aaa').any(axis=1)]

   cl1  cl2  cl3  cln
0  aaa  bbb  ccc  nnn
1  bbb  aaa  ccc  nnn

如果必须考虑lower()

df[df.apply(lambda x: x.str.lower()).eq('aaa').any(1)] #thanks Chris 

或者:

df[df.applymap(str.lower).eq('aaa').any(axis=1)] 

第二个更快,第一个可以处理NaN。