我有一个熊猫数据框,其中有两列,如下所示:
A B
Yes No
Yes Yes
No Yes
No No
NA Yes
NA NA
我想基于这些值创建一个新列,以便如果任何列值是Yes
,则新列中的值也应该是Yes
。如果两个列的值均为No
,则新列的值也为No
。最后,如果两个列的值均为NA
,则新列的输出也将具有NA
。以上数据的示例输出为:
C
Yes
Yes
Yes
No
Yes
NA
我在数据帧的长度上编写了一个循环,然后检查每个值以获取新列。但是,要保存1000万条记录要花费很长时间。有没有更快的pythonic方法来实现这一目标?
答案 0 :(得分:7)
类似
df.fillna('').max(axis=1)
Out[106]:
0 Yes
1 Yes
2 Yes
3 No
4 Yes
5
dtype: object
答案 1 :(得分:2)
尝试:
(df == 'Yes').eval('A | B').astype(str).mask(df['A'].isna() & df['B'].isna())
答案 2 :(得分:0)