我正在尝试合并两个熊猫数据框,但是我不知道如何获得所需的结果。这些是我正在查看的数据帧的示例版本:
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,但仍然找不到正确的方法。本质上,我需要使用与指南中相同的图形:
即我想保留来自df1的数据,该数据不在共享密钥部分之内,但是在共享区域内,我希望列“ A”中的df2数据覆盖df1中的数据。我什至不确定merge
是使用的正确工具。
我尝试将df1 = pd.merge(df1, df2, how='right', on='Date')
与不同的选项一起使用,但是在大多数情况下,它会在输出中创建两个单独的列-A_x
和A_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
谢谢!
答案 0 :(得分:1)
这是使用combine_first
的方法:
df2.set_index('Date').combine_first(df1.set_index('Date')).reset_index()
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