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

如何用Python将年龄列中无效值替换为列均值?

替换年龄列无效值为均值的Python实现方法

假设数据集的Vict Age列包含600,000条数据,其中存在0、-1这类不符合逻辑的无效值,需要将这些值替换为该列有效数据的均值。

原代码问题分析

你提供的代码存在语法错误与逻辑问题:

# 原代码(错误示例)
df6 = df5['Vict Age'].replace([0, -1]).mean())
df6.update(df5)
df6
  • 语法错误:多了一个闭合括号,mean()后多余的)会导致运行报错
  • 逻辑错误:replace([0, -1])未指定替换值,默认会把0、-1转为缺失值,后续mean()得到的是一个标量数值,无法用update()方法去更新原DataFrame

正确实现步骤

1. 计算有效数据的均值

先过滤掉无效值,再计算该列的均值,有两种常用写法:

import pandas as pd

# 写法1:通过布尔索引筛选有效数据后求均值
valid_mean = df5[~df5['Vict Age'].isin([0, -1])]['Vict Age'].mean()

# 写法2:将无效值转为缺失值,删除缺失值后求均值
valid_mean = df5['Vict Age'].replace([0, -1], pd.NA).dropna().mean()

2. 替换无效值为均值

可以直接修改原DataFrame的列,或者生成新的DataFrame保存结果:

# 方法1:直接修改原DataFrame的Vict Age列
df5['Vict Age'] = df5['Vict Age'].replace([0, -1], valid_mean)

# 方法2:创建原DataFrame的副本,修改副本避免影响原数据
df6 = df5.copy()
df6['Vict Age'] = df6['Vict Age'].replace([0, -1], valid_mean)

说明

  • 若你的数据集规模较大(60万条),上述两种方法的效率都足够应对,不会有性能问题
  • 建议使用方法2创建副本修改,避免误操作破坏原始数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:05:20