我正在尝试过滤DF布尔值。我想选择在所有列中都具有False值的行。我已经尝试了几种变体,但到目前为止还没有。
我最近的尝试是:
example_data != True
运行此命令时,似乎整个df都返回了。
我确定这是一件简单的事情,我要么不知道,要么就忘记了过滤。
欢迎寻求修复的任何方向:)
示例数据
example_data = {'Meta_Description_contains_kw': 97 False
99 False
100 False
101 False
480 True
537 True
549 True
116 False
120 False
121 False
482 True
123 True
125 False
129 False
550 False
131 False
593 True
136 False
138 False
140 False
141 False
143 False
16 True
152 False
157 False
158 False
160 False
175 False
594 True
186 False
194 False
605 False
197 False
488 True
525 True
202 False
585 True
207 False
493 False
634 True
642 True
231 False
498 True
619 False
510 False
50 False
512 False
Name: Meta_Description_contains_kw, dtype: bool,
'Title_1_contains_kw': 97 False
99 False
100 False
101 False
480 True
537 True
549 True
116 False
120 False
121 False
482 True
123 True
125 False
129 False
550 False
131 False
593 True
136 False
138 False
140 False
141 False
143 False
16 True
152 False
157 False
158 False
160 False
175 False
594 True
186 False
194 False
605 False
197 False
488 True
525 True
202 False
585 True
207 False
493 False
634 True
642 True
231 False
498 True
619 False
510 False
50 False
512 False
Name: Title_1_contains_kw, dtype: bool,
'H1-1_contains_kw': 97 False
99 False
100 False
101 False
480 True
537 True
549 True
116 False
120 False
121 False
482 True
123 True
125 False
129 False
550 False
131 False
593 True
136 False
138 False
140 False
141 False
143 False
16 True
152 False
157 False
158 False
160 False
175 False
594 True
186 False
194 False
605 False
197 False
488 True
525 True
202 False
585 True
207 False
493 False
634 True
642 True
231 False
498 True
619 False
510 False
50 False
512 False
Name: H1-1_contains_kw, dtype: bool,
'H2-1_contains_kw': 97 False
99 False
100 False
101 False
480 True
537 True
549 True
116 False
120 False
121 False
482 False
123 True
125 False
129 False
550 False
131 False
593 True
136 False
138 False
140 False
141 False
143 False
16 True
152 False
157 False
158 False
160 False
175 False
594 True
186 False
194 False
605 False
197 False
488 False
525 True
202 False
585 False
207 False
493 False
634 False
642 True
231 False
498 False
619 False
510 False
50 False
512 False
Name: H2-1_contains_kw, dtype: bool,
'H2-2_contains_kw': 97 False
99 False
100 False
101 False
480 True
537 False
549 True
116 False
120 False
121 False
482 False
123 True
125 False
129 False
550 False
131 False
593 False
136 False
138 False
140 False
141 False
143 False
16 True
152 False
157 False
158 False
160 False
175 False
594 False
186 False
194 False
605 False
197 False
488 False
525 False
202 False
585 False
207 False
493 False
634 True
642 False
231 False
498 False
619 False
510 False
50 False
512 False
Name: H2-2_contains_kw, dtype: bool}
答案 0 :(得分:2)
您可以尝试这个example_data=example_data[example_data!=True]
答案 1 :(得分:1)
嘿,我认为此伪代码可以帮助您理解逻辑。
for column in df.columns:
if df[column].dtype == bool and not any(df[column]):
print('The column `%s` has all false values'%column)
基本上在所有列上进行迭代,并检查类型是否为bool。
当类型为book时,我将any
函数应用于该列,如果任何True值返回False,它将返回True。
答案 2 :(得分:1)
使用DataFrame.all
,将所有列都按~
进行反转,并按boolean indexing
进行过滤:
df = df[(~df).all(axis=1)]
#if want seelct only boolean columns
df = df[(~df.select_dtypes(bool)).all(axis=1)]
print (df.head())
Meta_Description_contains_kw Title_1_contains_kw H1-1_contains_kw \
50 False False False
97 False False False
99 False False False
100 False False False
101 False False False
H2-1_contains_kw H2-2_contains_kw
50 False False
97 False False
99 False False
100 False False
101 False False
答案 3 :(得分:0)
example_data = example_data.loc[!(column1 & column2 &.....)]
我认为这可以解决问题(假设example_data是数据框的变量名)
答案 4 :(得分:0)
您可以通过换位(两次)来实现。
df = pd.DataFrame({'A': [True, True, False, False], 'B': [True, False, True, False]})
df[df.T.all().T]