给出以下DataFrame
:
A B
0 -10.0 NaN
1 NaN 20.0
2 -30.0 NaN
我想合并列A
和B
,用列NaN
中的值填充列A
中的B
单元格,然后删除列{ {1}},结果是这样的B
:
DataFrame
我已经通过使用 A
0 -10.0
1 20.0
2 -30.0
函数解决了这个问题。
完整的代码示例:
iterrows()
这似乎工作正常,但我在the documentation for iterrows()
中找到了以下信息:
您应该切勿修改要迭代的内容。
所以看来我做错了。
什么是更好/推荐的方法来达到相同的结果?
答案 0 :(得分:4)
将Series.fillna
与Series.to_frame
一起使用:
df = df['A'].fillna(df['B']).to_frame()
#alternative
#df = df['A'].combine_first(df['B']).to_frame()
print (df)
A
0 -10.0
1 20.0
2 -30.0
如果有更多列,并且每行需要第一个非缺失值,请使用回填缺失值,并按一个列DataFrame
的一个元素列表选择第一列:
df = df.bfill(axis=1).iloc[:, [0]]
print (df)
A
0 -10.0
1 20.0
2 -30.0