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

Pandas执行astype(int)时报ValueError: invalid literal for int() with base 10求助

解决Pandas中astype(int)遇到'6+3'的ValueError问题

你的bedroom列包含'6+3'这类代表加法表达式的字符串,直接调用astype(int)会报错,因为Python的int()函数只能解析纯数字格式的字符串,无法处理带运算符的表达式。以下是几种可行的解决方法:

  • 方法一:用eval()计算表达式(简单直接)
    针对包含+的字符串,用eval()执行加法运算,其他情况直接转整数:

    df['bedroom'] = df['bedroom'].apply(lambda x: eval(x) if '+' in x else int(x))
    

    注意:如果列中存在其他非数字/非加法格式的内容,可能会触发新的异常,需要额外处理。

  • 方法二:拆分字符串后求和(更安全)
    若确定所有带符号的内容都是X+Y格式,可拆分字符串后转整数再求和,避免eval()执行未知代码的风险:

    df['bedroom'] = df['bedroom'].str.split('+').apply(lambda parts: sum(int(p) for p in parts))
    
  • 方法三:兼容异常情况的通用处理
    如果列中存在多种无法直接转换的格式,可自定义函数并捕获异常,确保转换过程不中断:

    import pandas as pd
    
    def convert_bedroom(s):
        try:
            if '+' in s:
                return sum(int(p) for p in s.split('+'))
            else:
                return int(s)
        except (ValueError, TypeError):
            # 无法转换时返回pd.NA,也可替换为你需要的默认值(如0)
            return pd.NA
    
    df['bedroom'] = df['bedroom'].apply(convert_bedroom)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:52:52