You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用groupby函数计算列分位数并指定获取75分位值?

如何在pandas分组聚合中指定75分位统计

你需要给quantile()方法显式传递分位点参数q=0.75——因为该方法默认使用的是0.5(中位数)分位点。以下是几种实用的实现方式:

方法1:用lambda函数直接指定

df2 = df1.groupby(pd.Grouper(freq='5Min', closed='right', label='right')).agg({
    "value1": "mean",
    "value2": "max",
    "value3": lambda x: x.quantile(q=0.75)
})

注:这种方式生成的value3对应列名是<lambda>,如果需要更直观的名称,可以后续执行df2.rename(columns={"value3": "value3_q75"})修改。

方法2:用命名聚合规则(推荐,列名更清晰)

直接在聚合时定义列名和对应规则,无需后续重命名:

df2 = df1.groupby(pd.Grouper(freq='5Min', closed='right', label='right')).agg(
    value1_mean=("value1", "mean"),
    value2_max=("value2", "max"),
    value3_q75=("value3", lambda x: x.quantile(q=0.75))
)

生成的DataFrame列名将直接是value1_mean、value2_max、value3_q75,可读性更强。

方法3:用partial固定参数(适合复用场景)

如果需要多次使用75分位统计,可以预先固定参数:

from functools import partial

# 定义固定75分位的函数并指定名称
q75 = partial(pd.Series.quantile, q=0.75)
q75.__name__ = 'q75'

df2 = df1.groupby(pd.Grouper(freq='5Min', closed='right', label='right')).agg({
    "value1": "mean",
    "value2": "max",
    "value3": q75
})

内容的提问来源于stack exchange,提问作者prof31

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:54:16