我有以下数据帧:
print(df)
client_id route_id start
1 1_2 2019-01-01 03:00:00
8 1_4 2019-01-23 10:00:00
3 1_2 2019-01-15 04:10:00
4 1_10 2019-01-10 05:00:00
...
print(accident_df)
route_id start end
1_2 2018-12-24 2018-01-03
1_4 2019-01-25 2019-01-29
1_2 2019-02-24 2019-02-28
1_10 2019-01-05 2019-01-15
...
我希望按照以下条件合并它们(&;):
1.“路线id”必须匹配
2.df.start必须介于事故df.start和事故df.end之间(因此,大于第一个,小于后一个)
print(final_df)
client_id route_id start
1 1_2 2019-01-01 03:00:00
4 1_10 2019-01-10 05:00:00
由于两个数据帧都相当大(大于10M行),并且存在数千个“路由id”,因此基于“路由id”合并然后按条件选择行的解决方案效率极低,会导致与内存相关的问题(如Python Pandas - Compare 2 dataframes, multiple parameters)
我怎样才能有效地做到这一点
我们可以说这种方法比join更有效,因为它首先将df1切割成更小的数据帧,然后匹配路由id。(我不是专家)
假设数据集存储在excel工作表中(可以是任何其他格式/文件)
使用pandasql,您可以使用SQL脚本获取所需内容:
结果:
相关问题 更多 >
编程相关推荐