我的DataFrame包含多个列,其中每个行的唯一值为每行:
A B C D E
0 NaN NaN NaN NaN POSITIVE
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN POSITIVE
3 NaN NaN NaN NaN POSITIVE
4 POSITIVE NaN NaN NaN NaN
5 NaN NaN NaN NaN POSITIVE
6 NaN NaN NaN NaN POSITIVE
7 NEGATIVE NaN NaN NaN NaN
我需要将这些组合成一个摘要列:
0 POSITIVE
1 NaN
2 POSITIVE
3 POSITIVE
4 POSITIVE
5 POSITIVE
6 POSITIVE
7 NEGATIVE
我使用链式combine_first
方法完成了这项工作:
df.A.combine_first(df.B).combine_first(df.С).combine_first(df.В).combine_first(df.E)
后来我发现similar solution使用fillna
:
df.A.fillna(df.B).fillna(df.С).fillna(df.В).fillna(df.E)
但我正在寻找任意数量的列的推广。我尝试将这些方法应用为缩减函数,但无法使其正常工作。
有关更优雅/更有效的方法的任何想法吗?
答案 0 :(得分:3)
这是我的诀窍:
df.fillna('').sum(axis=1).replace('', np.nan)