考虑两个数据帧:

df_a = pd.DataFrame([
        ['a', 1],
        ['b', 2],
        ['c', NaN],
    ], columns=['name', 'value'])

df_b = pd.DataFrame([
        ['a', 1],
        ['b', NaN],
        ['c', 3],
        ['d', 4]
    ], columns=['name', 'value'])


所以看起来像

# df_a
  name  value
0   a   1
1   b   2
2   c   NaN

# df_b
  name  value
0   a   1
1   b   NaN
2   c   3
3   d   4


我想合并这两个数据框,并用另一列中的现有值填充value列的NaN值。换句话说,我想要:

# DESIRED RESULT
  name  value
0   a   1
1   b   2
2   c   3
3   d   4


当然,我可以使用自定义.map.apply来执行此操作,但是我想要一个使用merge等的解决方案,而不是编写自定义合并功能。如何才能做到这一点?

最佳答案

我认为您可以使用combine_first

print (df_b.combine_first(df_a))
  name  value
0    a    1.0
1    b    2.0
2    c    3.0
3    d    4.0


fillna

print (df_b.fillna(df_a))
  name  value
0    a    1.0
1    b    2.0
2    c    3.0
3    d    4.0


update的解决方案不如combine_first常见:

df_b.update(df_a)
print (df_b)
  name  value
0    a    1.0
1    b    2.0
2    c    3.0
3    d    4.0

关于python - Pandas :合并两个数据框列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40051567/

10-12 04:07