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
相关产品推荐
相关产品推荐

