python - 在 Pandas DataFrame 上选择具有条件的列

标签 python pandas dataframe conditional-statements

我有一个看起来像这样的数据框。

    col1    col2
0   something1  something1
1   something2  something3
2   something1  something1
3   something2  something3
4   something1  something2  

我正在尝试过滤在 col1col2 上具有 something1 的所有行。如果我只需要列上的条件逻辑,我可以用 df[df.col1 == 'something1'] 来实现,但是有没有办法用多个列来实现?

最佳答案

您可以使用 allboolean 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

编辑:

如果只需要选择一些列,您可以使用 isinboolean 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/

相关文章:

python - 从 Pandas 的一系列线条中制作列

python - S3 响应错误 : 100 Continue - python (appengine)

python - 从 Pandas 数据框获取最后条目的最佳方法

python - 根据 pandas 时间序列中的某天设置值

pandas - 如何显示 Pandas 列中某个值的最后一次出现?

python - 艰难地学习 Python 练习 18 帮助

Python 'requests' 库 - 定义特定的 DNS?

python - 如何将 Pandas Dataframe 中的字符串转换为列表或字符数组?

scala - 如何将 Spark RDD 保存到本地文件系统

r - 在 R 中识别和标记部分重复记录