Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按密集事件分组_Python_Pandas - Fatal编程技术网

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