jr1*_*321 1 python dataframe pandas
我有 2 个数据框 Dataframe1:
id date1
1 11-04-2022
1 03-02-2011
2 03-05-2222
3 01-01-2001
4 02-02-2012
Run Code Online (Sandbox Code Playgroud)
和数据框2:
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
...
Run Code Online (Sandbox Code Playgroud)
我想做的是从 Dataframe2 中获取与 Dataframe1 中的 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
Run Code Online (Sandbox Code Playgroud)
我将如何使用熊猫来做到这一点?
尝试pd.merge_asof,但首先将 date1、date2 转换为日期时间并对两个时间范围进行排序:
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"])
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |