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

Pandas如何实现分组内每行与组内首行指定列的差值计算

错误原因

你遇到的报错是因为SeriesGroupBy对象本身不支持sub方法,且直接对分组对象调用iloc[0]无法获取每组的首个行值,需要先通过分组聚合拿到每组的首个B列值,再做差值计算。

正确实现

使用transform方法将每组首行的B列值广播到组内所有行,直接与原B列做减法即可:

# 若要确保取到的是组内索引最小的行的值,可先按索引升序排序
df = df.sort_index()
df['D'] = df['B'] - df.groupby('A')['B'].transform('first')

运行结果

和你期望的输出完全一致:

A  B  C  D
0  a  2  3  0
1  b  5  6  0
2  c  8  9  0
3  a  0  0 -2
4  a  8  7  6
5  c  2  1 -6

实现说明

groupby('A')['B'].transform('first')会对A列的每个分组取首个B列值,返回的Series长度和原DataFrame完全一致,每个位置对应所在分组的首个B值,直接相减即可快速得到目标差值列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:45:04