熊猫合并数据帧并覆盖原始df中的数据

时间:2019-10-17 05:00:19

标签: python pandas dataframe merge

我正在尝试合并两个熊猫数据框,但是我不知道如何获得所需的结果。这些是我正在查看的数据帧的示例版本:

df1 = pd.DataFrame([["09/10/2019",None],["10/10/2019",None], ["11/10/2019",6],
                    ["12/10/2019",5], ["13/10/2019",3], ["14/10/2019",3],
                    ["15/10/2019",5],
                    ["16/10/2019",None]], columns = ['Date', 'A'])

df2 = pd.DataFrame([["10/10/2019",3], ["11/10/2019",5], ["12/10/2019",6],
                    ["13/10/2019",1], ["14/10/2019",2], ["15/10/2019",4]],
                    columns = ['Date', 'A'])

我已经检查过Pandas merging 101,但仍然找不到正确的方法。本质上,我需要使用与指南中相同的图形:

enter image description here

即我想保留来自df1的数据,该数据不在共享密钥部分之内,但是在共享区域内,我希望列“ A”中的df2数据覆盖df1中的数据。我什至不确定merge是使用的正确工具。

我尝试将df1 = pd.merge(df1, df2, how='right', on='Date')与不同的选项一起使用,但是在大多数情况下,它会在输出中创建两个单独的列-A_xA_y

这就是我想要得到的最终结果:

         Date    A
0  09/10/2019  NaN
1  10/10/2019  3.0
2  11/10/2019  5.0
3  12/10/2019  6.0
4  13/10/2019  1.0
5  14/10/2019  2.0
6  15/10/2019  4.0
7  16/10/2019  NaN

谢谢!

1 个答案:

答案 0 :(得分:1)

这是使用combine_first的方法:

df2.set_index('Date').combine_first(df1.set_index('Date')).reset_index()

reindex_like

df2.set_index('Date').reindex_like(df1.set_index('Date')).reset_index()

         Date    A
0  09/10/2019  NaN
1  10/10/2019  3.0
2  11/10/2019  5.0
3  12/10/2019  6.0
4  13/10/2019  1.0
5  14/10/2019  2.0
6  15/10/2019  4.0
7  16/10/2019  NaN