Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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,我有一个数据帧,它有一个变量和一个等距的日期时间索引(索引的粒度为1秒)。假设总共有1000个样本: dates = pd.date_range('2015-1-1', periods=(1000) ,freq='S') df = pd.DataFrame(np.random.rand(1000),index=dates, columns=['X']) X 2015-01-01 00:00:00 2.2 2015-01-01 00:00:01 2.5 2

我有一个数据帧,它有一个变量和一个等距的日期时间索引(索引的粒度为1秒)。假设总共有1000个样本:

dates = pd.date_range('2015-1-1', periods=(1000) ,freq='S')
df = pd.DataFrame(np.random.rand(1000),index=dates, columns=['X'])

                    X
2015-01-01 00:00:00 2.2
2015-01-01 00:00:01 2.5
2015-01-01 00:00:02 1.2
2015-01-01 00:00:03 1.5
2015-01-01 00:00:04 3.7
2015-01-01 00:00:05 3.1

etc
我想确定滚动窗口(给定长度)的开始,该窗口包含给定窗口大小内包含最小值数字的最大集合

因此,在上面的示例中,如果窗口大小为2,则答案是:

start_index =  2015-01-01 00:00:02
end_index   =  2015-01-01 00:00:03

我试着阅读
pandas
文档,看看是否有一个滚动计算可以帮上忙,但没有运气!谢谢。

您只需在
df['X']==df['X'].min()上执行
rolling_sum
。那么窗口的结尾就是:

>>> ts = df['X'] == df['X'].min()
>>> pd.rolling_sum(ts, win_size).argmax()
为了获得窗口的开始位置,您可以移动窗口的结束位置,或者移动序列:

>>> pd.rolling_sum(ts.shift(-win_size), win_size).argmax()