我有多个时间间隔列表,我需要找到所有这些时间间隔的公共时间间隔(交叉点)
例如
a = [['2018-02-03 15:06:30', '2018-02-03 17:06:30'], # each line is read as [start, end]
['2018-02-05 10:30:30', '2018-02-05 10:36:30'],
['2018-02-05 11:30:30', '2018-02-05 11:42:32']]
b = [['2018-02-03 15:16:30', '2018-02-03 18:06:30'],
['2018-02-04 10:30:30', '2018-02-05 10:32:30']]
c = [['2018-02-01 15:00:30', '2018-02-05 18:06:30']]
结果将是
common_intv = [['2018-02-03 15:16:30','2018-02-03 17:06:30'],
['2018-02-05 10:30:30','2018-02-05 10:32:30']]
我发现this解决方案应该也适用于时间间隔,但我想知道是否有一种更有效的方法在熊猫身上实现这一点
链接中建议的解决方案将一次处理两个列表,即首先查找a
和b
之间的公共间隔,然后将这些公共间隔放入变量common
中,然后查找common
和c
之间的公共间隔,依此类推
当然,全局解决方案(同时考虑所有时间间隔)会更好
您可以在两个方向上使用
pandas.merge_asof
来获得第一个选择,然后仔细清理结果行。代码可以是:正如预期的那样:
相关问题 更多 >
编程相关推荐