我在Python中有两个数据框,如何使用NAN
的值填充df1
中的df2
值?我想要像df3
这样的决赛,如下所示。我尝试了几种方法,但都失败了。
df3 = df1.update(df2)
或
df3 = df1.combine_first(df2)
我无法找到解决方案,任何人都可以提供帮助?我如何在Python中编写这部分代码?
如何使用Df2填充DF1中的NAN值:
答案 0 :(得分:-1)
您对combine_first
有正确的想法,但需要先通过set_index
对齐索引:
import pandas as pd, numpy as np
df1 = pd.DataFrame({'Group': ['A', 'A', 'A', 'B', 'B', 'B'],
'Key': ['AA1', 'AB2', 'AC3', 'BD4', 'BE5', 'BF6'],
'Value1': [np.nan, 20, 40, 60, np.nan, np.nan],
'Value2': [np.nan, 30, 50, 23, np.nan, np.nan]})
df2 = pd.DataFrame({'Key': ['AA1', 'BE5', 'BF6'],
'Value1': [66, 20, 21],
'Value2': [33, 60, 70]})
res = df1.set_index('Key').combine_first(df2.set_index('Key')).reset_index()
print(res)
Key Group Value1 Value2
0 AA1 A 66 33
1 AB2 A 20 30
2 AC3 A 40 50
3 BD4 B 60 23
4 BE5 B 20 60
5 BF6 B 21 70