У меня есть фрейм данных с одним столбцом (dtype = bool), содержит True / False значения, я хочу отфильтровать записи, если столбец bool == False

Ниже скрипт выдает ошибку, помогите пожалуйста.

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

Ошибка в

if mFile['CCK'].str.contains(['False']
7
SPy 25 Авг 2017 в 14:34

3 ответа

Лучший ответ

Вам не нужно преобразовывать значение в строку (str.contains), потому что это уже логическое значение. На самом деле, поскольку это логическое значение, если вы хотите сохранить только истинные значения, все, что вам нужно, это:

mFile[mFile["CCK"]]

Предполагая, что mFile является фреймом данных, а CCK содержит только значения True и False

Редактировать: если вы хотите использовать ложные значения:

mFile[~mFile["CCK"]]
7
con-- 25 Авг 2017 в 11:43

Чтобы отобразить только если запись 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()
3
cs95 25 Авг 2017 в 11:58

Как насчет:

if False in mFile['CCK']:
    print(mFile[~mFile['CCK']])

Вы можете использовать ~ как выше или mFile['CCK'] == False, что может быть немного более читабельным для других ...

2
Jörn Hees 25 Авг 2017 в 11:52