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

Jupyter Notebook中按分组均值替换DataFrame指定列NaN值问题

问题解决:按分组均值填充指定列NaN值

原代码错误点

  • 拼写错误:grouby应为groupby,tranform应为transform
  • 列名大小写不匹配:原数据分组列是Types,不是小写types
  • fillna用法错误:fillna['s_months']写法不合法,且同时使用赋值和inplace=True逻辑冲突
  • 分组索引选取语法错误:列选择的括号位置不符合pandas规范

正确实现代码

写法1(单句紧凑实现):

df[['s_months', 'incidents']] = df.groupby(['Types', 'o_periods'])[['s_months', 'incidents']].transform(lambda x: x.fillna(x.mean()))

写法2(拆分逻辑更易读):

# 1. 按分组计算两列的均值,transform会把结果映射到原数据的每一行
group_means = df.groupby(['Types', 'o_periods'])[['s_months', 'incidents']].transform('mean')
# 2. 用对应分组的均值填充NaN值
df[['s_months', 'incidents']] = df[['s_months', 'incidents']].fillna(group_means)

填充效果验证

运行后原数据的NaN行将被正确填充:

  • Types=1、o_periods=1的行:s_months填充为911,incidents填充为3
  • Types=2、o_periods=1的行:s_months填充为26851,incidents填充为36

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:57:01