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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:10:21