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

Pandas如何对每个id分组首行的price列值减去对应less列值

Pandas 分组修改首行数据解决方案

核心思路是通过groupby.cumcount()标记每个id分组的首行,仅对标记出的行执行price减less的操作,其余行数据保持不变:

完整实现代码

import pandas as pd

# 1. 构造示例DataFrame
df = pd.DataFrame({
    "id": ["a", "a", "a", "b", "b", "b"],
    "items": ["Fruits"] * 6,
    "price": [120, 220, 320, 120, 280, 320],
    "less": [20, 20, 20, 50, 20, 20]
})

# 2. 仅修改每个id分组首行的price值
df.loc[df.groupby("id").cumcount() == 0, "price"] = df["price"] - df["less"]

# 3. 移除不需要的less列,得到最终结果
df = df.drop(columns="less")

输出结果

iditemsprice
aFruits100
aFruits220
aFruits320
bFruits70
bFruits280
bFruits320

逻辑说明

df.groupby("id").cumcount()会为每个id分组内的行按原始顺序生成从0开始的自增序号,序号为0的就是每个分组的首行,用loc定位到这些行的price列做减法,不会影响其他行的数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:15:03