生成条件以选择 pandas.DataFrame 中的行

Generate condition for selecting rows in pandas.DataFrame

对于数据框 df,我在 'a' 或 'b' 列中选择具有 True 值的行。

>>> df
Out[127]: 
       a      b
0  False  False
1   True   True
2   True  False
>>> con = (df['a'] == True) | (df['b'] == True)
>>> con
Out[129]: 
0    False
1     True
2     True
dtype: bool
>>> df[con]
Out[130]: 
      a      b
1  True   True
2  True  False

数据框中只有两列。对于实际代码,此类列的数量是一个变量。如何即时生成条件 con

说,当 df 有从 az 的 26 列时,我想要

>>> con = (df['a'] == True) | (df['b'] == True) | ... (df['y'] == True) | (df['z'] == True)

我可以用它来获取所需的行

您可以使用 DataFrame.any:

>>> df = pd.DataFrame(np.random.choice([True]+[False]*5, size=(6,5)), columns=list("abcde"))
>>> df
       a      b      c      d      e
0  False  False  False  False  False
1  False  False   True  False  False
2  False  False   True  False  False
3  False  False  False  False  False
4  False  False  False  False   True
5  False  False  False  False  False
>>> df.any(axis=1)
0    False
1     True
2     True
3    False
4     True
5    False
dtype: bool
>>> df[df.any(axis=1)]
       a      b      c      d      e
1  False  False   True  False  False
2  False  False   True  False  False
4  False  False  False  False   True

和往常一样,如果您想确保对原件有句柄,可以使用 df.loc[df.any(axis=1)]