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