我有以下内容:
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'])]
您可以使用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。