如何合并熊猫数据框并覆盖其中之一中与匹配行相对应的值?

时间:2019-02-21 15:10:31

标签: pandas dataframe merge

我想在python中合并两个数据框,如下所示。

如果df1为:enter image description here

和df2:enter image description here

我希望结果看起来像这样: enter image description here

从本质上讲,我需要将两个数据帧按照天和有序的天合并;这些天具有相应的费率值,需要保持相同,除非,例如,如果您查看第9天,这两个dfs中的费率都与df2的费率不同,则需要保留该费率。

我对python真的很了解,而且我对pd.merge也不太了解,因此,如果有人可以帮助我,我将非常感激。

非常感谢!

2 个答案:

答案 0 :(得分:1)

您正在寻找combine_first

df2.set_index('day',inplace=True)
df2=df2.combine_first(df1.set_index('day')).reset_index()
df2
Out[552]: 
   day  val
0    2  1.0
1    3  1.0
2    4  2.0
3    5  2.0
4    6  2.0
5    7  2.0
6    8  2.0
7    9  3.0
8   12  3.0

答案 1 :(得分:0)

使用concat()sort_values()drop_duplicates()

>> outcome = pd.concat([df1, df2]).sort_values('days').drop_duplicates(subset=['days'],keep='last').reset_index(drop=True)
>> outcome
    days    interest rate
0   2   0.02560
1   3   0.01230
2   4   0.01470
3   5   0.25600
4   6   0.78560
5   7   0.09850
6   8   0.05890
7   9   0.02268
8   12  0.01235