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

Pandas DataFrame报错TypeError:无法将int与str拼接的问题求助

错误原因分析

你的TypeError是因为F1列的数据类型不统一:前4行是整数,但索引4的**AB**是字符串,导致F1列整体被识别为object混合类型。执行df["F1"] + df["I1"]时,Pandas会尝试按字符串拼接逻辑处理,但整数无法直接和字符串拼接,因此报错。

解决方案

场景1:**AB**是输入错误,应为数值

如果**AB**是输入时的格式错误(比如原本是数值但误加了**),可以先清理列内容并转换为数值类型:

import pandas as pd
import numpy as np

df = pd.read_excel("test123.xlsx")
# 移除F1列的**符号,转换为数值,无效值转为NaN
df["F1"] = df["F1"].astype(str).str.replace(r"\*\*", "", regex=True)
df["F1"] = pd.to_numeric(df["F1"], errors="coerce")

# 执行相加,NaN会导致对应结果为NaN,可按需用fillna填充
subone = df["F1"] + df["I1"]
print(subone)

运行结果:

0     10.0
1     32.0
2     85.0
3    119.0
4      NaN
dtype: float64

场景2:**AB**是合法非数值,需保留特殊值

如果**AB**是业务上的合法标识,你可以选择跳过该行计算,或对非数值行返回特定结果:

import pandas as pd
import numpy as np

df = pd.read_excel("test123.xlsx")

# 自定义函数:仅当F1是可转换的数值时才相加,否则返回NaN
def safe_add(f1, i1):
    try:
        # 先尝试清理**再转数值
        clean_f1 = str(f1).strip("*")
        return int(clean_f1) + i1
    except ValueError:
        return np.nan  # 也可返回原F1值,比如return f1

subone = df.apply(lambda x: safe_add(x["F1"], x["I1"]), axis=1)
print(subone)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:35:21