我正在努力寻找一种将密集的事件分组在一起的有效方法。如果我有以下时间生成的时间序列:
In [247]: times = pd.date_range('1/1/2011', periods=72, freq='M')
In [248]: times = times[(times < times[20]) | (times > times[40])]
所以我有2组事件,每个事件间隔1个月,两者之间有很长的差距。有没有找到这些群体的有效方法?
答案 0 :(得分:2)
使用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()
输出:
times value
0 2011-01-31 00:00:00 0.022073
1 2014-06-30 00:00:00 0.003856