在熊猫DataFrame中合并两列

时间:2019-05-08 10:47:49

标签: python pandas dataframe

给出以下DataFrame

      A     B
0 -10.0   NaN
1   NaN  20.0
2 -30.0   NaN

我想合并列AB,用列NaN中的值填充列A中的B单元格,然后删除列{ {1}},结果是这样的B

DataFrame

我已经通过使用 A 0 -10.0 1 20.0 2 -30.0 函数解决了这个问题。

完整的代码示例:

iterrows()

这似乎工作正常,但我在the documentation for iterrows()中找到了以下信息:

  

您应该切勿修改要迭代的内容。

所以看来我做错了。

什么是更好/推荐的方法来达到相同的结果?

1 个答案:

答案 0 :(得分:4)

Series.fillnaSeries.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