如何根据日期差异为一天的日期合并两个数据帧?



Input

df1

id            A 
2020-01-01    10
2020-02-07    20
2020-04-09    30
df2
id           B
2019-12-31   50
2020-02-06   20
2020-02-07   70
2020-04-08   34
2020-04-09   44

目标

df
id            A     B
2020-01-01    10   50
2020-02-07    20   20
2020-04-09    30   34

具体如下:

  • DF1 基于 ID 合并 DF2,从而添加来自 DF2 的列。
  • ID 的类型为日期时间。
  • 合并规则:基于昨天的DF1

在合并之前,您可以简单地在 df2 的 ID 列中添加 2 天吗?

df1.merge(df2.assign(id=df2['id'] + pd.Timedelta(days=1)), on='id')
id   A   B
0 2020-01-01  10  50
1 2020-02-07  20  20
2 2020-04-09  30  34

尝试pd.merge_asof

df = pd.merge_asof(df1,df2,on='id',tolerance=pd.Timedelta('1 day'),allow_exact_matches=False)
id   A   B
0 2020-01-01  10  50
1 2020-02-07  20  20
2 2020-04-09  30  34

最新更新