Pandas:合并两个数据帧列

时间:2016-10-14 20:33:55

标签: python pandas dataframe merge

考虑两个数据帧:

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之类的解决方案,而不是编写自定义合并功能。怎么办呢?

1 个答案:

答案 0 :(得分:3)

我认为您可以使用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