【发布时间】:2018-02-23 21:12:25
【问题描述】:
为什么我不能在rolling 多索引DataFrame 时使用偏移量? 例如:
rng = pd.date_range('2017-01-03', periods=20, freq='8D')
i = pd.MultiIndex.from_product([['A','B','C'], rng], names=['Name','Date'])
df = pd.DataFrame(np.random.randn(60), i, columns=['Vals'])
如果我尝试使用偏移量进行分组和滚动,我会得到“ValueError: window must be an integer”:
df['Avg'] = df.groupby(['Name'])['Vals'].rolling('30D').mean() # << Why doesn't this work?
并不是说以下这些变体满足我的需求,但请注意,使用 int 进行分组和滚动是有效的:
df['Avg'] = df.groupby(['Name'])['Vals'].rolling(4).mean()
我可以在 DataFrame 的单索引子集上滚动偏移:
d = df.loc['A']
d['Avg'] = d['Vals'].rolling('30D').mean()
如果真的不可能在多索引 DataFrames 上使用偏移量进行滚动,那么将一个偏移量应用于每个 0 级索引项的最有效解决方法是什么?
【问题讨论】:
标签: python pandas dataframe aggregate multi-index