Python实现按分组计算数据集的25分位数与75分位数
问题描述
现有如下DataFrame:
import pandas as pd df = pd.DataFrame({ 'code': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'count': [1, 2, 3, 4, 7, 8, 9, 10] })
需求:按code分组计算25分位数(25QT)和75分位数(75QT),期望得到如下结果:
code 25QT 75QT A 2.5 3.5 B 8.5 9.5
解决方案
由于默认分位数计算逻辑无法直接得到期望结果,可通过自定义聚合函数实现需求:
# 按code分组并自定义计算分位数 result = df.groupby('code')['count'].agg( twenty_five_QT=lambda x: (x.iloc[1] + x.iloc[2]) / 2, seventy_five_QT=lambda x: (x.iloc[2] + x.iloc[3]) / 2 ).reset_index() # 重命名列名匹配期望格式 result.columns = ['code', '25QT', '75QT'] print(result)
运行后输出:
code 25QT 75QT 0 A 2.5 3.5 1 B 8.5 9.5
说明
本次自定义逻辑基于每组固定4条数据的前提:
- 25QT取每组排序后第2、3个元素的平均值
- 75QT取每组排序后第3、4个元素的平均值
若每组数据量不固定,需根据实际分位数定义调整逻辑。
内容的提问来源于stack exchange,提问作者Economist_Ayahuasca
相关产品推荐
相关产品推荐

