在多索引数据帧上运行标准差

时间:2018-10-07 15:14:10

标签: python pandas dataframe

是否可以像这样在多索引数据帧上计算运行标准偏差(SD)?

elementRef.nativeElement.setAttibute(camelCaseAttribute, "true")

1 个答案:

答案 0 :(得分:2)

您可以尝试将索引级别为0的df分组,并使用pd.rolling计算具有指定滚动窗口长度的标准差

df.groupby(df.index.get_level_levels(0))['Value'].rolling(2).std()

来自@ayhan输入

df.groupby(level='Symbol')['Value'].rolling(2).std()

修改

计算列的累积标准偏差

df = df.assign(std=df['Value'].apply(lambda x:[x])).groupby(level='Symbol').apply(lambda x: x.cumsum())
df['std'] = df['std'].apply(lambda x: pd.Series(x).std())

df.groupby(df.index.get_level_levels(0))['Value'].transform(lambda x: [x[:i+1].std() for i in range(len(x))])

出局:

a         NaN
b    4.963890
c    3.673994
d         NaN
e    3.535534
f    2.516611
Name: val, dtype: float64