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

问题描述 投票:0回答:1

我有以下内容:

  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'])]
python pandas dataframe
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.