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

时间:2015-01-17 04:12:32

标签: python python-2.7 pandas

对于数据框df,我选择列中的True值为' a'或者' b'。

>>> 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有26列来自 a z 时,我想要类似

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

我可以用来获得所需的行

1 个答案:

答案 0 :(得分:3)

您可以使用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)]