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

如何修复Pandas中int()以10为基数的无效字面量错误:"0.75"

问题修复方案

你遇到的问题核心是:df2里的列是带小数的字符串(比如"0.75"),但df1对应列是int类型,直接用astype强制转换时,字符串没法直接转成整数,所以报错。之前把两个DF转成字符串再转的操作没用,因为df1转成字符串后所有列类型都变成了object,转完df2还是object,根本没匹配到df1原本的数值类型。

给你两个通用的修复方案:

方案一:逐列精准处理(推荐,可控性高)

遍历每一列,先把df2的列转成标准数值类型,再匹配df1的目标类型,还能灵活处理异常值:

import pandas as pd

# 循环处理每一列
for col, target_dtype in df1.dtypes.items():
    # 处理数值类型列(int/float)
    if pd.api.types.is_numeric_dtype(target_dtype):
        # 第一步:把df2的列转成数值(errors='raise'会报错提醒无效值,换成'coerce'会把无效值转成NaN)
        df2[col] = pd.to_numeric(df2[col], errors='raise')
        # 如果目标是整数类型,可选择直接截断或四舍五入
        if pd.api.types.is_integer_dtype(target_dtype):
            # 直接截断小数部分(比如0.75→0)
            df2[col] = df2[col].astype(target_dtype)
            # 或者四舍五入后转int(0.75→1):
            # df2[col] = df2[col].round().astype(target_dtype)
    # 非数值类型(比如字符串、日期)直接转换
    else:
        df2[col] = df2[col].astype(target_dtype)

方案二:自动推断转换(适合简单场景)

用pandas的convert_dtypes先让df2自动适配合理的数值类型,再匹配df1的类型:

# 先让df2自动转换为最合适的数值类型
df2 = df2.convert_dtypes()
# 再匹配df1的类型
df2 = df2.astype(df1.dtypes.to_dict(), errors='ignore')

这个方案更简洁,但对异常值的处理不如方案一灵活,errors='ignore'会跳过转换失败的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:45:40