我有两个 Dataframe :
df1 = a1 a2 recorded_at
1. 2. 2020-03-18 00:00:01
8. 1. 2021-04-15 04:00:10
9. 0. 2021-03-18 12:40:30
df2 = b1 b2 DateTime
7. 8. 2020-03-18 00:00:01
2. 4. 2020-03-18 00:00:04
2. 6. 2021-04-15 04:00:12
4. 2. 2021-03-18 12:40:40
我想通过比较recorded_at
和DateTime
来合并它们,并取4秒内的所有行。因此,我将得到:
df_new = a1 a2 recorded_at DateTime b1 b2
1. 2. 2020-03-18 00:00:01 2020-03-18 00:00:01 7 8
1. 2. 2020-03-18 00:00:01 2020-03-18 00:00:04 2 4
8. 1. 2021-04-15 04:00:10 2021-04-15 04:00:12 2 6
我该怎么做?
2条答案
按热度按时间q8l4jmvw1#
如果您不希望df1的一行与df2的一行匹配,则
merge_asof
是一个有效的解决方案。否则,merge
计算将是二次的,因此很大程度上取决于每个输入的大小。输出:
ecfdbz9o2#
初始化 Dataframe
转换为Pandas日期时间
合并df以创建组合
查找时间增量
提取结果
结果:
它适用于示例输入。但如果数据量很大,您可能需要更好的策略。