例如,如果我有一个 pandas 数据框并正在执行各种聚合
df = pd.DataFrame({'a': [1,1,2], 'b': [4,5,6]})
df.groupby('a').agg({'b': ['sum', 'mean', 'std']})
b
sum mean std
a
1 9 4.5 0.707107
2 6 6.0 NaN
那么如何指定
ddof
为 std
?
我知道我可以在执行
df.groupby('a')['b'].std(ddof=0)
时执行此操作,但是如何在指定多个聚合的 .agg
中执行此操作?还是没有办法?
Pandas dataframe groupby 中建议的用于计算总体标准差的解决方案不合适,因为它会发出警告
<ipython-input-25-3ae33ed0991c>:1: FutureWarning: The provided callable <function std at 0x7f528458cd60> is currently using SeriesGroupBy.std. In a future version of pandas, the provided callable will be used directly. To keep current behavior pass the string "std" instead.
使用自定义(命名)函数:
def std(x):
return x.std(ddof=0)
df.groupby('a').agg({'b': ['sum', 'mean', std]})
输出:
b
sum mean std
a
1 9 4.5 0.5
2 6 6.0 0.0