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

如何使用pandas transform计算分组分位数并添加回原DataFrame

正确实现方法

你的代码报错是因为没有正确向transform传递带参数的quantile函数,同时直接将transform返回结果赋值给整个df会覆盖原表数据,正确操作有两种常用写法:

方法1:使用lambda匿名函数封装参数

适合需要自定义逻辑的场景,直接在lambda内调用quantile并传入分位参数:

# 直接给原df新增列,50分位数计算后保留3位小数
df['50th percentile'] = df.groupby('ID')['pay'].transform(lambda x: x.quantile(0.50)).round(3)

方法2:利用transform的关键字参数传参

transform支持将额外参数直接传递给要执行的方法,写法更简洁:

# 直接传入方法名字符串,后续参数会自动传递给quantile方法
df['50th percentile'] = df.groupby('ID')['pay'].transform('quantile', q=0.50).round(3)

完整可运行示例

import pandas as pd

# 构造你的示例数据
df = pd.DataFrame({
    'ID': [1, 1, 1],
    'Name': ['John', 'John', 'John'],
    'pay': [10, 20, 30]
})

# 执行计算新增列
df['50th percentile'] = df.groupby('ID')['pay'].transform(lambda x: x.quantile(0.50)).round(3)

print(df)

运行后输出结果和你预期一致:

ID  Name  pay  50th percentile
0   1  John   10             20.0
1   1  John   20             20.0
2   1  John   30             20.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:06:05