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

如何在迭代分组后正确更新DataFrame中的对应行数据?

解决分组内计算差值并更新原始DataFrame的问题

你的问题出在:groupby返回的group是原始DataFrame的副本,修改副本里的列不会同步到原DataFrame,而且手动循环iterrows赋值不仅效率低,还容易因为索引匹配失误导致值放错位置。

直接用Pandas内置的分组计算方法就能搞定,不需要手动循环:

方法一:直接用groupby.diff()

这是最简洁的方式,专门用来计算分组内的前后差值:

import pandas as pd
import numpy as np

mydf = pd.read_csv("my.csv")
# 按a、b分组,对c列计算与前一行的差值,结果自动对齐原DataFrame的行
mydf["forwardDelta"] = mydf.groupby(["a", "b"])["c"].diff()

方法二:用transform自定义计算

如果需要更复杂的分组内操作,可以用transform,它会把分组计算的结果映射回原DataFrame的对应行:

import pandas as pd
import numpy as np

mydf = pd.read_csv("my.csv")

def calc_group_delta(group):
    return group["c"] - group["c"].shift(1)

mydf["forwardDelta"] = mydf.groupby(["a", "b"]).transform(calc_group_delta)

这两种方法都能自动保证计算出的差值精准对应到原始DataFrame的正确行,而且比手动循环快得多,尤其是处理大数据量的时候。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:55:10