如何用Python Pandas的groupby实现列值全组合分组统计
解决按指定分组聚合Pandas DataFrame的问题
看起来你已经找对了核心思路——用groupby+agg来实现需求,不过可以优化写法,同时精准锁定Segment Type为PRIME的数据。我给你整理了两种清晰的实现方式:
方式一:分步处理(可读性更高)
# 1. 先筛选出Segment Type为PRIME的目标行 prime_subset = df[df['Segment Type'] == 'PRIME'] # 2. 按指定列分组,对Q1执行多维度聚合计算 result = prime_subset.groupby(['Segment Type', 'Nature of Query'])['Q1'].agg( 样本量='size', 最小值='min', 最大值='max', 平均值='mean' ) # 可选:如果需要把多级索引转成普通列,执行下面一行 result = result.reset_index()
方式二:合并成一行代码(更简洁)
result = df[df['Segment Type'] == 'PRIME'].groupby(['Segment Type', 'Nature of Query'])['Q1'].agg( size='size', min='min', max='max', mean='mean' ).reset_index()
补充细节说明
- 关于聚合函数的写法:你之前用的
pd.np.size这类写法在新版本Pandas里已经被弃用了,推荐直接用字符串别名(比如'size'、'min'),或者导入numpy后用np.size、np.min,后者的写法示例如下:
import numpy as np result = df[df['Segment Type'] == 'PRIME'].groupby(['Segment Type', 'Nature of Query'])['Q1'].agg( size=np.size, min=np.min, max=np.max, mean=np.mean ).reset_index()
- 执行完成后,
result会包含每个PRIME+Nature of Query组合对应的统计值,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者explorer_x
相关产品推荐
相关产品推荐

