我有一个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填充新字段?
答案 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