Pandas计算列A第一五分位数对应行的列B平均值实现咨询
实现方法
首先修正你获取分位数的代码:df.A.quantile([1]) 实际计算的是A列的最大值,若要获取你示例中提到的第一五分位(即A列数值最高的前20%分界值),需要传入分位点参数0.8,完整实现逻辑如下:
- 计算A列的80百分位数作为筛选阈值
- 筛选出A列大于等于该阈值的行
- 对筛选结果的B列求平均值
对应代码:
# 计算A列80分位数作为分界阈值 threshold = df['A'].quantile(0.8) # 筛选符合条件的行后求B列平均值 result = df[df['A'] >= threshold]['B'].mean()
示例验证
用你提供的测试数据运行代码后:
- 计算得到的阈值为7.5
- 符合条件的行是Identifier为G、H的两条记录,对应B列值为2、1
- 最终计算得到的平均值为1.5,完全符合你的预期。
如果你后续需要统计A列数值最低的20%区间的B列平均值,仅需将分位点参数改为0.2,同时将筛选条件改为df['A'] <= threshold即可。
内容的提问来源于stack exchange,提问作者Kilian Smith
相关产品推荐
相关产品推荐

