考虑两个数据帧:
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/