gpt4 book ai didi

python - 如果日期相同,如何有条件地在日期时间合并两个数据框?

转载 作者:行者123 更新时间:2023-12-05 01:24:19 25 4
gpt4 key购买 nike

我有两个数据框

df1:

       datetime                 value  date_only
324 2022-03-09 09:26:12.185 48 2022-03-09
626 2022-03-10 08:39:59.087 24 2022-03-10
923 2022-03-11 09:20:41.032 30 2022-03-11
1218 2022-03-12 09:54:11.748 44 2022-03-12

和 df2:

      datetime                      amount  date_only
22 2022-03-08 09:53:12.040358 5.0 2022-03-08
313 2022-03-09 08:34:55.160470 16.0 2022-03-09
339 2022-03-09 10:39:25.053984 3.0 2022-03-09
623 2022-03-10 08:30:14.754819 7.0 2022-03-10
916 2022-03-11 08:51:41.312365 14.0 2022-03-11
1217 2022-03-12 09:40:40.462450 13.0 2022-03-12
1472 2022-03-13 07:52:02.369454 8.0 2022-03-13
1774 2022-03-14 07:58:23.352999 8.0 2022-03-14
2095 2022-03-15 08:50:33.755545 7.0 2022-03-15

我正在尝试合并这两个数据帧,以便包含 df1 中的所有内容,并且仅包含 df2 在同一日期(使用 date_only)出现的行,但根据日期时间(或索引)按时间顺序散布,如如下:

       datetime                     value   date_only    amount
313 2022-03-09 08:34:55.160470 null 2022-03-09 16.0
324 2022-03-09 09:26:12.185 48 2022-03-09 null
339 2022-03-09 10:39:25.053984 null 2022-03-09 3.0
623 2022-03-10 08:30:14.754819 null 2022-03-10 7.0
626 2022-03-10 08:39:59.087 24 2022-03-10 null
916 2022-03-11 08:51:41.312365 null 2022-03-11 14.0
923 2022-03-11 09:20:41.032 30 2022-03-11 null
1217 2022-03-12 09:40:40.462450 null 2022-03-12 13.0
1218 2022-03-12 09:54:11.748 44 2022-03-12 null

请注意,df2 中日期不在 df1 中的行(3 月 8/13/14/15)不包含在合并的 df 中。

我试过关注 this有类似主题的问题,但他们正在使用 cumcount() 来实现其他目标。我也尝试过实现自己的合并、连接、连接等,但都无济于事,例如

test_merge = pd.merge(df1, df2, how='left', on='date_only', left_index=True, right_index=True)

谁能帮我找出合并的正确语法?或者在合并(新列等)之前我是否需要一些其他预处理步骤才能使其工作?非常感谢。

最佳答案

IIUC:

out = pd.concat([df1, df2.loc[df2['date_only'].isin(df1['date_only'])]]).sort_index()
print(out)

# Output
datetime value date_only amount
313 2022-03-09 08:34:55.160470 NaN 2022-03-09 16.0
324 2022-03-09 09:26:12.185 48.0 2022-03-09 NaN
339 2022-03-09 10:39:25.053984 NaN 2022-03-09 3.0
623 2022-03-10 08:30:14.754819 NaN 2022-03-10 7.0
626 2022-03-10 08:39:59.087 24.0 2022-03-10 NaN
916 2022-03-11 08:51:41.312365 NaN 2022-03-11 14.0
923 2022-03-11 09:20:41.032 30.0 2022-03-11 NaN
1217 2022-03-12 09:40:40.462450 NaN 2022-03-12 13.0
1218 2022-03-12 09:54:11.748 44.0 2022-03-12 NaN

关于python - 如果日期相同,如何有条件地在日期时间合并两个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71484554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com