熊猫合并数据帧并覆盖原始数据

2024-09-26 22:07:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图合并两个熊猫数据帧,但我不知道如何得到我需要的结果。以下是我正在查看的数据帧的示例版本:

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的数据,这些数据不在shared keys部分,但在shared area中,我希望来自列'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

提前谢谢


Tags: columns数据版本none示例dataframepandasdate
1条回答
网友
1楼 · 发布于 2024-09-26 22:07:19

下面是一种使用^{}的方法:

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

相关问题 更多 >

    热门问题