Pandas if语句跨列列表

时间:2014-06-25 22:03:25

标签: python numpy pandas

我有一个DataFrame,其中有几列是0或1或1。例如:

>>> df=pd.DataFrame([[1,1,0], [0,0,0], [0,1,1], [0,1,0]], columns=['A', 'B', 'C'])

如果列['A', 'B', 'C']列中的任何一列等于1,我想创建一个填充值为1的新列。

我可以这样做:

>>> df['Any']=0
>>> df['Any'][(df["A"] == 1) | (df["B"] == 1) | (df["C"] == 1)]=1

但是,我如何才能传递列表列表,例如Cols=['A', 'B', 'C'],如果列表中的任何列等于1,则用1​​填充新字段?

1 个答案:

答案 0 :(得分:1)

您可以使用any方法:

In [11]: df == 1
Out[11]:
       A      B      C
0   True   True  False
1  False  False  False
2  False   True   True
3  False   True  False

In [12]: (df == 1).any(1)
Out[12]:
0     True
1    False
2     True
3     True
dtype: bool

您可以传入列的子集:

In [13]: (df[['A', 'C']] == 1).any(1)
Out[13]:
0     True
1    False
2     True
3    False
dtype: bool