考虑两个数据帧:
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
之类的解决方案,而不是编写自定义合并功能。怎么办呢?
答案 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