Python 按密集事件分组
我正试图找到一种有效的方法,将间隔很近的事件组合在一起。如果我有以下生成的时间序列:Python 按密集事件分组,python,pandas,Python,Pandas,我正试图找到一种有效的方法,将间隔很近的事件组合在一起。如果我有以下生成的时间序列: In [247]: times = pd.date_range('1/1/2011', periods=72, freq='M') In [248]: times = times[(times < times[20]) | (times > times[40])] [247]中的times=pd.date\u范围('2011年1月1日',周期=72,频率=M') 在[248]中:次=次[(次次[4
In [247]: times = pd.date_range('1/1/2011', periods=72, freq='M')
In [248]: times = times[(times < times[20]) | (times > times[40])]
[247]中的times=pd.date\u范围('2011年1月1日',周期=72,频率=M')
在[248]中:次=次[(次<次[20])|(次>次[40])]
因此,我有两组活动,每组间隔1个月,中间有很长的间隔。有没有找到这些组的有效方法?使用diff()
方法和阈值来计算groupby数组:
import pandas as pd
import numpy as np
times = pd.date_range('1/1/2011', periods=72, freq='M')
times = times[(times < times[20]) | (times > times[40])]
s = pd.DataFrame({"value":np.random.rand(len(times)), "times":times})
g = (s.times.diff() > np.timedelta64(60, "D")).astype(int).cumsum()
print s.groupby(g).min()
哦,我真的很喜欢这个解决方案。我也在做类似的事情,我添加了一个diff列,如果它低于我的切分,那么将值设置为0,然后
cumsum
ed。我更喜欢把一组连续剧作为一个单打。
times value
0 2011-01-31 00:00:00 0.022073
1 2014-06-30 00:00:00 0.003856