我有一个看起来像这样的数据框。
col1 col2
0 something1 something1
1 something2 something3
2 something1 something1
3 something2 something3
4 something1 something2
我正在尝试过滤在 col1
或 col2
上具有 something1
的所有行。如果我只需要列上的条件逻辑,我可以用 df[df.col1 == 'something1']
来实现,但是有没有办法用多个列来实现?
最佳答案
您可以使用 all
与 boolean indexing
:
print ((df == 'something1').all(1))
0 True
1 False
2 True
3 False
4 False
dtype: bool
print (df[(df == 'something1').all(1)])
col1 col2
0 something1 something1
2 something1 something1
编辑:
如果只需要选择一些列,您可以使用 isin
与 boolean indexing
选择所需的列
,然后使用subset
- df[cols]
:
print (df)
col1 col2 col3
0 something1 something1 a
1 something2 something3 s
2 something1 something1 r
3 something2 something3 a
4 something1 something2 a
cols = df.columns[df.columns.isin(['col1','col2'])]
print (cols)
Index(['col1', 'col2'], dtype='object')
print (df[(df[cols] == 'something1').all(1)])
col1 col2 col3
0 something1 something1 a
2 something1 something1 r
关于python - 在 Pandas DataFrame 上选择具有条件的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37663931/