现在,我正在使用
的方式来计算我的时刻moments = df_sum.groupby(level=[0,1])['myCol'].agg([np.min, np.median, np.mean, np.max, np.std, len])
但是,现在我有一个包含相应权重的附加列weights
。也就是说,如果列的权重是2
,则在计算mean,std等时,观察应该计数两次。我想使用weights
列重复我的计算。蛮力的方式是使用weights
重复我的观察,但是:
许多统计函数包含附加计算权重的参数,例如np.average:
weights:array_like,optional一个权重数组 a中的值。 a中的每个值都有助于平均值 它的相关重量。权重数组可以是1-D(其中 case的长度必须是沿给定轴的a的大小)或者 与a相同的形状。如果权重=无,则假定a中的所有数据 重量等于一。
鉴于我想包含诸如np.average
之类的功能,我将如何从上面重新命名我的命令?还有其他聚合函数的命令,例如median
吗?琐碎的是,min
和max
不应该改变,计算len()
也不应该太难。
答案 0 :(得分:0)
你能在群发之前做到这一点吗?
df_sum['weighted_col'] = df_sum['weights'] * df_sum['my_col']
df.groupby(level=[0, 1].agg([...])[<columns to keep>]
此外,专业提示:您使用groupby
计算所有内容,这样做会更容易:
df.groupby(level=[0, 1].apply(lambda g: g.describe().T)