在 Dataframe 中过滤布尔值
Filtering Boolean in Dataframe
我有一个 ±100k 行和 10 列的 df。
我想 find/filter 哪些行至少包含 2 到 4 个真值。
为了简单起见,假设我有这个 df:
A B C D E F
1 True True False False True
2 False True True True False
3 False False False False False
4 True False False False True
5 True False False False False
预期输出:
A B C D E F
1 True True False False True
2 False True True True False
4 True False False False True
我试过使用
df[(df['B']==True) | (df['C']==True) | (df['D']==True)| (df['E']==True)| (df['F']==True)]
但这只会消除错误行,如果我想找到至少 2/3 正确的实例则不起作用。
有人可以帮忙吗?欣赏一下。
使用DataFrame.select_dtypes
for only boolean columns, count True
s by sum
and then filter values by Series.between
in boolean indexing
:
df = df[df.select_dtypes(bool).sum(axis=1).between(2,4)]
print (df)
A B C D E F
0 1 True True False False True
1 2 False True True True False
3 4 True False False False True
我有一个 ±100k 行和 10 列的 df。 我想 find/filter 哪些行至少包含 2 到 4 个真值。 为了简单起见,假设我有这个 df:
A B C D E F
1 True True False False True
2 False True True True False
3 False False False False False
4 True False False False True
5 True False False False False
预期输出:
A B C D E F
1 True True False False True
2 False True True True False
4 True False False False True
我试过使用
df[(df['B']==True) | (df['C']==True) | (df['D']==True)| (df['E']==True)| (df['F']==True)]
但这只会消除错误行,如果我想找到至少 2/3 正确的实例则不起作用。
有人可以帮忙吗?欣赏一下。
使用DataFrame.select_dtypes
for only boolean columns, count True
s by sum
and then filter values by Series.between
in boolean indexing
:
df = df[df.select_dtypes(bool).sum(axis=1).between(2,4)]
print (df)
A B C D E F
0 1 True True False False True
1 2 False True True True False
3 4 True False False False True