在groupby中循环熊猫聚合



我正在寻找缩短代码,我不需要重复多个lambda函数。此代码是工作的,要进一步优化。如有任何帮助,不胜感激。

for col in col_list:
f = { col: [lambda x: x.quantile(0.01), lambda x: x.quantile(0.05), lambda x: x.quantile(0.10), lambda x: x.quantile(0.15),
lambda x: x.quantile(0.20), lambda x: x.quantile(0.25), lambda x: x.quantile(0.30), lambda x: x.quantile(0.35)
]}
grpby_df = df.groupby('grpbycol').agg(f)

GroupBy。Quantile存在并且接受分位数值的列表,因此我们可以执行

(df.groupby("grpbycol")[col]
.quantile([0.01, *np.arange(0.05, 0.40, 0.05)])
.unstack())

np。range帮助生成该序列,最后的unstack将把分位数值从多索引的某个级别移动到列部分。

最新更新