Pandas 窗口功能,即rolling
工作得很好。但是,我知道来自 SQL,Windows 也可以是PARTITIONED BY
某个组。
如何在熊猫中获得分组窗口?A:
df.groupby(['group']).rolling('10s').mean()
失败:
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'MultiIndex'
如果df.rolling('10s', on='group')
使用它,它只适用于“组”是 int 的情况,即在 SQL 中一些具体数量的前/后行。如何按时间保留窗口?
编辑最小样本:
import random
groups = ['A', 'B']
df = pd.DataFrame({'value': range(60), 'group': [random.choice(groups) for i in range(60)]},index=pd.DatetimeIndex(pd.date_range(start='20160101', end='20160229')))
df.head()
以下工作,但不考虑组:
df[['value']].rolling('2d').mean().head()
以下不适用于时间窗口:
df[['group','value']].rolling(3, on='group').mean().head()
和
df.rolling('2D', on='group').mean().head()
失败:window must be an integer
尝试使用时间窗口时。