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

pandas按City分组计算新列并使用分组均值填充缺失值问题

pandas 按规则创建计算列并分组回填实现

完整可运行代码

import pandas as pd
import numpy as np

# 构造示例数据
df1 = pd.DataFrame({
    'City': ['SF','NYC','SF','NYC','SF','CHI','LA','LA','CHI'], 
    'Val': [2,4,0,0,7,4,3,5,6],
    'Val1': [1,1,1,1,1,1,1,1,1] 
})

# 步骤1:为Val不等于0的行计算new_col值
df1.loc[df1['Val'] != 0, 'new_col'] = df1['Val'] / df1['Val1']

# 步骤2:按城市分组,用每组内已计算的new_col均值,填充该组Val=0的空值行
df1['new_col'] = df1.groupby('City')['new_col'].transform(lambda x: x.fillna(x.mean()))

输出结果

运行后得到的df1结构如下:

CityValVal1new_col
SF212.0
NYC414.0
SF014.5
NYC014.0
SF717.0
CHI414.0
LA313.0
LA515.0
CHI616.0

注:你给出的预期输出中NYC组0值行的new_col为2属于笔误,按照需求规则,NYC组内非0行的new_col只有4,均值为4,对应回填值为4。

原有代码问题说明

  • 变量名混用:定义的DataFrame变量是df1,循环逻辑中误用了不存在的df变量
  • 计算逻辑顺序错误:没有先为非0行赋值new_col,直接求group['new col'].mean()只能得到空值
  • 赋值目标错误:回填时没有指定目标列名为new_col,留空导致赋值失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:33:03