选择带有 boolen 的 dataframe 列,rest 必须为 false

Selecting dataframe columns with boolen, rest have to be false

提问人:L F 提问时间:11/28/2022 最后编辑:L F 更新时间:11/28/2022 访问量:19

问:

我尝试过滤具有特定条件的数据帧,但现在不知道如何确保所有其他列都必须为 false。

A | B | C | D | E | F
True True False False False False
True False True False False True
True True True False False False

给定这个 df,我想选择 A 为 tru 且 B 或 C 为 True 的每一行。

df.loc[(df.A == True) & ((df.B == True) or (df.C == True))]

df.query('A and (b or C) ')

我的 resut 将是

A | B | C | D | E | F
True True False False False False
True False True False False True
True False True False False False

但是我怎样才能确保所有其他未提及的列 (D,E,F) 必须为 False,以便结果是

A | B | C | D | E | F
True True False False False False
True False True False False False
Python Pandas DataFrame 布尔 逻辑 代码行

评论


答:

1赞 mozway 11/28/2022 #1

您可以将另一个掩码与 columns.difference任意一起使用:

m1 = df['A'] & (df['B']  | df['C'])
m2 = ~df[df.columns.difference(['A', 'B', 'C'])].any(axis=1)
df.loc[m1 & m2]

输出:

      A     B      C      D      E      F
0  True  True  False  False  False  False
2  True  True   True  False  False  False