Python 熊猫在移动窗口中获得最小总数
我有如下数据帧:Python 熊猫在移动窗口中获得最小总数,python,pandas,Python,Pandas,我有如下数据帧: df=pd.Series(index=pd.date_range(start='1/1/2017', end='1/10/2017', freq='D'), data=[5,5,2,1,3,4,5,6,7,8]) df Out[216]: 2017-01-01 5 2017-01-02 5 2017-01-03 2 2017-01-04 1 2017-01-05 3 2017-01-06 4 2017-01-07
df=pd.Series(index=pd.date_range(start='1/1/2017', end='1/10/2017', freq='D'),
data=[5,5,2,1,3,4,5,6,7,8])
df
Out[216]:
2017-01-01 5
2017-01-02 5
2017-01-03 2
2017-01-04 1
2017-01-05 3
2017-01-06 4
2017-01-07 5
2017-01-08 6
2017-01-09 7
2017-01-10 8
Freq: D, dtype: int64
我想确定具有最小总值的3天期间的开始日期。因此,在本例中,2017-01-03至2017-01-05在这3天内的最小值为6
有没有一种方法可以做到这一点,而不必通过每个3天窗口循环
结果将是:
2017-01-03 6
如果有多个窗口具有相同的最小和,则结果可能会有每个窗口的记录 IIUC
rolling
df=pd.Series(index=pd.date_range(start='1/1/2017', end='1/10/2017', freq='D'),
data=[5,5,2,1,3,4,5,6,7,8])
df=df.to_frame()
df['New']=df.rolling(3).sum().shift(-2).values
df.loc[df.New==df.New.min(),:].drop(0,1)
Out[685]:
New
2017-01-03 6.0
这太棒了。为了澄清我是否想将窗口大小更改为4(作为一个示例),它应该是df['New']=df.rolling(4.sum().shift(-3.values)。是吗?@AJG519是的,你明白了