为何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
相关产品推荐
相关产品推荐

