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

基于车型的车价均值插补报错:DataFrameGroupBy不支持赋值

问题解决:分组均值插补车价字段

报错原因

你遇到的TypeError: 'DataFrameGroupBy' object does not support item assignment,是因为grouped_df = df1.groupby('modele')得到的是分组对象(GroupBy),不是普通的DataFrame,无法直接像操作DataFrame那样给它的列赋值。

正确实现步骤

拆分两步完成需求,先替换异常值为NaN,再按车型分组填充均值:

  1. 替换异常值为NaN
    直接在原DataFrame上操作,把prix_millions里的0.0和1000000.0替换成缺失值:
import pandas as pd

# 方法1:批量替换
df1['prix_millions'] = df1['prix_millions'].replace([0.0, 1000000.0], pd.NA)

# 方法2:布尔索引精准替换(效果一致)
# mask = (df1['prix_millions'] == 0.0) | (df1['prix_millions'] == 1000000.0)
# df1.loc[mask, 'prix_millions'] = pd.NA
  1. 按车型分组填充均值
    使用groupby.transform()方法,它会返回和原DataFrame长度一致的序列,直接赋值回原字段即可:
# 计算每组均值,填充对应组的缺失值
df1['prix_millions'] = df1.groupby('modele')['prix_millions'].transform(
    lambda x: x.fillna(x.mean())
)

也可以用更简洁的写法:

df1['prix_millions'] = df1['prix_millions'].fillna(
    df1.groupby('modele')['prix_millions'].transform('mean')
)

完整代码示例

import pandas as pd

# 假设df1是你的原始数据
# df1 = pd.read_csv('你的数据文件.csv')

# 步骤1:替换异常值为NaN
df1['prix_millions'] = df1['prix_millions'].replace([0.0, 1000000.0], pd.NA)

# 步骤2:分组均值插补
df1['prix_millions'] = df1.groupby('modele')['prix_millions'].transform(
    lambda x: x.fillna(x.mean())
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:22:48