获取其他数据帧panda中日期最近的行



我有两个数据帧数据帧1:

id date1
1 11-04-2022
1 03-02-2011
2 03-05-2222
3 01-01-2001
4 02-02-2012

和Dataframe2:

id date2 data data2
1 11-02-2222 1 3
1 11-02-1999 3 4
1 11-03-2022 4 5
2 22-03-4444 5 6
2 22-02-2020 7 8
...

我想做的是从数据帧2中取一行,该行的日期与数据帧1中的date1最近,但它必须符合id,但日期必须在date1之前所需的输出如下所示:

id date1 date2 data data2
1 11-04-2022 11-03-2022 4 5
1 03-02-2011 11-02-1999 3 4
2 03-05-2222 22-02-2020 7 8

使用熊猫我该怎么做?

尝试pd.merge_asof,但首先将date1、date2转换为datetime,并对两个时间帧进行排序:

df1["date1"] = pd.to_datetime(df1["date1"])
df2["date2"] = pd.to_datetime(df2["date2"])
df1 = df1.sort_values(by="date1")
df2 = df2.sort_values(by="date2")
print(
pd.merge_asof(
df1,
df2,
by="id",
left_on="date1",
right_on="date2",
direction="nearest",
).dropna(subset=["date2"])
)

最新更新