使用int()转换CSV负数值触发ValueError问题求助
问题解决:CSV中特殊负号导致int()转换失败
你遇到的核心问题是:CSV里的负数用的不是普通的ASCII减号(-),而是全角的特殊负号(−),Python的int()函数只能识别标准的ASCII减号,所以触发了ValueError。
下面是几种解决方法:
方法一:读取CSV时直接处理
利用pd.read_csv的converters参数,自定义函数替换特殊负号:import pandas as pd def fix_special_minus(s): return s.replace('−', '-') # 读取时对x1列做转换 data = pd.read_csv("1.csv", converters={'x1': fix_special_minus}) # 现在可以正常转换 print(int(data.iloc[0]['x1'])) # 输出 -2方法二:读取数据后批量修正列
如果已经读取了数据,直接对目标列做字符串替换:# 替换x1列中的特殊负号 data['x1'] = data['x1'].str.replace('−', '-') print(int(data.iloc[0]['x1'])) # 输出 -2方法三:直接转成数值列(更省心)
替换后用pd.to_numeric直接把列转为数值类型,后续无需手动转int():data['x1'] = pd.to_numeric(data['x1'].str.replace('−', '-')) # x1列现在是数值类型 print(data['x1'].iloc[0]) # 直接输出 -2(int类型)
内容的提问来源于stack exchange,提问作者gelerum
相关产品推荐
相关产品推荐

