0

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尝试使用时间窗口时。

4

1 回答 1

1

删除索引,以便您可以分组。我认为索引列的问题。

df.groupby(['col2','col3'], as_index=False)

于 2018-11-12T05:53:44.783 回答