如何在pandas中按四分位数分组并计算其他列的求和、均值等指标
实现代码
直接使用pandas的groupby+agg聚合方法即可完成需求,完整可运行代码如下:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'quartile': [1, 1, 2, 2, 3, 3, 3, 4], 'value1': [1, 1, 1, 0, 0, 0, 1, 0], 'value2': [0.9, 0.8, 0.75, 0.75, 0.5, 0.4, 0.3, 0.1] }) # 按quartile分组后执行多维度聚合 res = df.groupby('quartile', as_index=False).agg( value1_sum = ('value1', 'sum'), value2_avg = ('value2', 'mean'), no_of_instances_in_val1 = ('value1', 'count') ) # 可选:将value2的均值保留两位小数,和示例输出格式对齐 res['value2_avg'] = res['value2_avg'].round(2) print(res)
核心逻辑说明
groupby('quartile', as_index=False):按四分位列分组,as_index=False保证quartile最终作为普通列输出,而非行索引agg支持自定义聚合后的列名,规则为新列名=('原始列名', '聚合函数'),可一次性指定多列不同的聚合规则:- 对
value1列执行sum求和,得到value1_sum - 对
value2列执行mean求均值,得到value2_avg - 对
value1列执行count统计非空值数量,即可得到分组的样本量
- 对
运行上述代码得到的结果和期望输出完全一致。
内容的提问来源于stack exchange,提问作者Piotr94
相关产品推荐
相关产品推荐

