如何在多索引数据框中重新采样数据

我有以下数据框:

如何在多索引数据框中重新采样数据

我需要重新采样数据以计算每周pct_change()。我如何获得每周更改?

类似data['pct_week'] = data['Adj Close'].resample('W').ffill().pct_change(),但数据需要按data.groupby(['month','week'])分组

这样,每个月都会产生4个每周变化的值。然后我可以用图形表示

我所做的是df['pct_week'] = data['Adj Close'].groupby(['week','day']).pct_change(),但我遇到了这个错误TypeError: 'type' object does not support item assignment

kyb620 回答:如何在多索引数据框中重新采样数据

如果只想{重采样一次},则只需DatetimeIndex,因此添加了 各个级别的DataFrame.reset_index都没有先执行,然后使用自定义功能进行分组和重采样,因为未实现pct_change的{​​{1}}:

resample

另一个想法是为def percent_change(x): return pd.Series(x).pct_change() 使用numpy解决方案:

pct_change

def percent_change(x):
    return x / np.concatenate(([np.nan],x[:-1])) - 1

这样,每个月都会为每周更改生成4个值

因此似乎没有df1 = (df.reset_index(level=[1,2,3]) .groupby(['month','week'])['Adj Close'] .resample('W') .apply(percent_change)) ,只有groupby和链Series.pct_change之类的必要下采样了:

sum
,

删除不需要的索引。 datetime索引足以进行重新采样/分组

df.index = df.index.droplevel(['month','week','day'])

按周重新采样,选择所需的列,添加聚合函数,然后计算百分比变化。

df.resample('W')['Adj Close'].mean().pct_change()
本文链接:https://www.f2er.com/3165501.html

大家都在问