Sla*_*ast 5 datetime resampling dataframe python-3.x pandas
我需要重新采样数据来计算每周的 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
如果想先用重采样分组是必要的DatetimeIndex
而已,所以加入
DataFrame.reset_index
由各级无需先,然后分组和自定义功能重采样,因为pct_change
对resample
未实现:
def percent_change(x):
return pd.Series(x).pct_change()
Run Code Online (Sandbox Code Playgroud)
另一个想法是使用 numpy 解决方案pct_change
:
def percent_change(x):
return x / np.concatenate(([np.nan], x[:-1])) - 1
Run Code Online (Sandbox Code Playgroud)
df1 = (df.reset_index(level=[1,2,3])
.groupby(['month', 'week'])['Adj Close']
.resample('W')
.apply(percent_change))
Run Code Online (Sandbox Code Playgroud)
这样每个月都会产生 4 个每周变化的值
所以似乎没有groupby
,只有必要的下采样sum
和链Series.pct_change
:
df2 = (df.reset_index(level=[1,2,3])
.resample('W')['Adj Close']
.sum()
.pct_change())
Run Code Online (Sandbox Code Playgroud)