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

为何Pandas转换DataFrame的age列类型时会试图转换列名?

解决DataFrame中age列转int时的ValueError问题

问题根源

你遇到的错误是因为age列中存在字符串值'age'(大概率是CSV数据里混入了重复的表头行),导致转换时Pandas无法将这个字符串转为整数。

分步解决方案

1. 先确认数据问题

执行以下代码查看age列的所有唯一值,验证是否存在'age':

print(df['age'].unique())

2. 清洗数据并转换类型

场景一:读取CSV时直接处理重复表头

如果是CSV文件里有重复的表头行(比如第二行又写了一次表头),读取时跳过该行:

import pandas as pd
# 根据实际重复行的位置调整skiprows参数,比如重复行是第2行则skiprows=[1]
df = pd.read_csv('your_data.csv', skiprows=[1])
# 转换为支持空值的整数类型
df['age'] = pd.to_numeric(df['age'], errors='coerce').astype('Int64')

场景二:已读取DataFrame后清洗

如果已经加载了数据,先过滤掉age列等于'age'的行,再转换:

# 过滤无效行
df = df[df['age'] != 'age']
# 转换为int类型
df['age'] = df['age'].astype(int)

如果存在其他非数字字符串,用to_numeric强制转换(无法转换的设为NaN后可选择丢弃):

df['age'] = pd.to_numeric(df['age'], errors='coerce').dropna().astype(int)

3. 验证结果

转换完成后检查列类型和数据:

print(df['age'].dtype)
print(df['age'].head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:07:08