在 pandas 中显示列为 False 的行

新手上路,请多包涵

我有一个数据框,其中一列(dtype=bool)包含 True / False 值,如果 bool 列 == False,我想过滤记录

下面的脚本出错了,请帮忙。

 if mFile['CCK'].str.contains(['False']):
    print(mFile.loc[mFile['CCK'] == False])

错误在

if mFile['CCK'].str.contains(['False']

原文由 Learnings 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 642
2 个回答

您不需要将该值转换为字符串 ( str.contains ),因为它已经是一个布尔值。事实上,因为它是一个布尔值,如果你只想保留真实值,你只需要:

 mFile[mFile["CCK"]]

假设 mFile 是一个数据帧并且 CCK 只包含 True 和 False 值

编辑:如果你想要假值使用:

 mFile[~mFile["CCK"]]

原文由 ConorSheehan1 发布,翻译遵循 CC BY-SA 3.0 许可协议

要仅在记录为 False 时显示,您需要反转条件:

 mFile[~mFile['CCK']])

MVCE:

原版的:

 In [1273]: df
Out[1273]:
       A    B
0  False    8
1   True   98
2   True   97
3  False  106
4  False   50
5  False   80
6  False   80
7   True   72
8  False  117
9  False   29

使用 boolean indexing

 In [1271]: df[~df.A].B
Out[1271]:
0      8
3    106
4     50
5     80
6     80
8    117
9     29
Name: B, dtype: int64

您还可以使用 pd.Series.mask

 In [1272]: df.B.mask(df.A).dropna()
Out[1272]:
0      8.0
3    106.0
4     50.0
5     80.0
6     80.0
8    117.0
9     29.0
Name: B, dtype: float64


如果您的数据有字符串条目,则需要 pd.Series.str.contains

 In [1278]: df[df.A.astype(str).str.contains('False')]
Out[1278]:
       A    B
0  False    8
3  False  106
4  False   50
5  False   80
6  False   80
8  False  117
9  False   29

对于你的情况,它会是

mFile[mFile['CCK'].astype(str).str.contains('False') ]

要检查 False-y 值是否存在,只需获取掩码并调用 pd.Series.any()

 mFile['CCK'].astype(str).str.contains('False').any()

原文由 cs95 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题