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