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

Pandas分组计算归一化价格回写DataFrame仅最后组生效如何修复

问题原因

你代码的核心问题是每次循环直接对整个Price_Norm列赋值,normalized_price仅包含当前分组的索引对应的值,其他索引位置没有匹配项,会被自动填充为NaN,因此每次循环都会覆盖上一轮的计算结果,最终只剩下最后一个分组(也就是Dog)的计算结果留存。

修复方案

方案1:修改原有循环的赋值逻辑

只给当前商品对应的行赋值,不要覆盖全列,把你标注的问题行替换为:

data.loc[data['itemName'] == this_item, 'Price_Norm'] = normalized_price

方案2:更简洁的pandas原生写法(推荐)

不需要手动写循环遍历分组,直接用groupby+transform即可完成分组计算并自动匹配索引回写:

import pandas as pd

d = {
    'itemName': ['Cat', 'Cat', 'Dog', 'Dog'],
    'Price': [1, 2, 3, 4],
    'Price_Norm':[0,0,0,0],
}
data = pd.DataFrame(data=d)
# 分组计算归一化值并回写
data['Price_Norm'] = data.groupby('itemName')['Price'].transform(lambda x: x - x.max())

运行后最终的data结果如下:

itemNamePricePrice_Norm
Cat1-1
Cat20
Dog3-1
Dog40

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:03