使用pandas的astype方法转换列数据类型时出现ValueError如何解决
问题原因
核心错误在报错最后一行:ValueError: invalid literal for int() with base 10: '1,200',含义是你要转换为整数的字符串里包含Python int类型无法识别的字符:这里是千位分隔符逗号,即1,200里的,,所以转换失败。
修复方案
先把Price列里的千位逗号全部替换为空,再做类型转换即可:
# 替换所有千位分隔符逗号,再转换为整数 df['Price'] = df['Price'].str.replace(',', '').astype(int)
如果你的数据里还存在空值、其他非数字字符的情况,可使用更兼容的写法,转换失败的内容会被标记为缺失值,后续再单独处理异常值即可:
import pandas as pd import numpy as np df['Price'] = pd.to_numeric(df['Price'].str.replace(',', ''), errors='coerce').astype('Int64')
内容的提问来源于stack exchange,提问作者SQLrookie
相关产品推荐
相关产品推荐

