在熊猫中显示列为False的行

SPy*_*SPy 3 python dataframe pandas

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

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

if mFile['CCK'].str.contains(['False']):
    print(mFile.loc[mFile['CCK'] == False])
Run Code Online (Sandbox Code Playgroud)

错误中

if mFile['CCK'].str.contains(['False']
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 7

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

mFile[~mFile['CCK']])
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

使用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
Run Code Online (Sandbox Code Playgroud)

您还可以使用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
Run Code Online (Sandbox Code Playgroud)

如果您的数据有字符串条目,您需要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
Run Code Online (Sandbox Code Playgroud)

对于你的情况,它会是

mFile[mFile['CCK'].astype(str).str.contains('False') ]
Run Code Online (Sandbox Code Playgroud)

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

mFile['CCK'].astype(str).str.contains('False').any()
Run Code Online (Sandbox Code Playgroud)


con*_*n-- 5

您无需将值转换为字符串(str.contains),因为它已经是布尔值。实际上,由于它是一个布尔值,因此,如果您只想保留真实值,则需要做的是:

mFile[mFile["CCK"]]
Run Code Online (Sandbox Code Playgroud)

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

编辑:如果要使用假值,请使用:

mFile[~mFile["CCK"]]
Run Code Online (Sandbox Code Playgroud)