首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为熊猫中按日期时间索引的数据的每个条目在另一个数据文件中查找最新条目的有效方法

为熊猫中按日期时间索引的数据的每个条目在另一个数据文件中查找最新条目的有效方法
EN

Stack Overflow用户
提问于 2022-09-19 01:34:26
回答 1查看 32关注 0票数 1

我有两个数据文件,它们都是按日期时间索引的。例如,dataframe 1如下所示:

代码语言:javascript
运行
复制
|date            |  value |
+----------------+--------+
|2021-11-11 09:00|    1   |
|2021-11-11 10:00|    1   |
|2021-11-12 11:00|    2   |
|2021-11-14 09:00|    2   |
|2021-11-15 09:30|    3   |

而dataframe 2看起来像:

代码语言:javascript
运行
复制
|date            |  value |
+----------------+--------+
|2021-11-10 11:00|    2   |
|2021-11-11 09:30|    3   |
|2021-11-12 12:00|    4   |
|2021-11-13 09:50|    2   |
|2021-11-15 10:30|    3   |

对于dataframe 1中的每个条目,我希望在dataframe 2中找到最近的一个条目,并在dataframe 1中创建一个新列,以设置两个dataframe之间的关系。

为了使它更加清楚,预期的结果应如下所示。

代码语言:javascript
运行
复制
|date            |  value |    df2_index   |
+----------------+--------+----------------|
|2021-11-11 09:00|    1   |2021-11-10 11:00|
|2021-11-11 10:00|    1   |2021-11-11 09:30|
|2021-11-12 11:00|    2   |2021-11-11 09:30|
|2021-11-14 09:00|    2   |2021-11-13 09:50|
|2021-11-15 09:30|    3   |2021-11-13 09:50|

对于dataframe 1中的第一个条目,2021-11-11 09:00最近的一个条目是2021-11-10 11:00,第三个条目2021-11-12 11:00的最新条目,这意味着在dataframe 2中最大的不超过2021-11-12 11:00的时间戳是2021-11-11 09:30

有任何熊猫方法可以有效地实现这一功能吗?

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-19 06:17:08

熊猫merge_asof应该足够了:

代码语言:javascript
运行
复制
pd.merge_asof(df1, df2.assign(df2_index = df2.date), on = 'date')

                 date  value_x  value_y           df2_index
0 2021-11-11 09:00:00        1        2 2021-11-10 11:00:00
1 2021-11-11 10:00:00        1        3 2021-11-11 09:30:00
2 2021-11-12 11:00:00        2        3 2021-11-11 09:30:00
3 2021-11-14 09:00:00        2        2 2021-11-13 09:50:00
4 2021-11-15 09:30:00        3        2 2021-11-13 09:50:00
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73767537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档