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

Pandas求和报错:float64类型触发TypeError及KeyError问题咨询

解决float64列求和时的TypeError与KeyError问题

我来帮你拆解这个问题的原因和对应的解决办法:

报错原因分析

1. KeyError 直接原因

你执行df['Total'].sum()时触发KeyError,说明你的DataFrame里不存在名为Total的列,或者列名存在拼写问题——比如大小写不一致(比如实际列名是total)、多了/少了空格(比如 Total),导致程序找不到对应的列。

2. TypeError 深层原因

虽然你用str.extract提取数字并转成float64,但这个逻辑有两个潜在问题:

  • 正则(\d+)只能提取整数部分,如果原数据包含小数(比如"15.67"),会丢失小数位,甚至如果字符串里没有整数,会返回NaN;
  • 如果Total列不在你处理的iloc[:,9:33]范围内,那它可能还是未处理的object类型,直接对字符串类型列求和就会触发TypeError: an integer is required。

分步解决办法

第一步:确认列的存在性与正确性

先运行以下代码,查看所有列名,确认Total列是否存在:

print(df.columns.tolist())
  • 如果列名确实不存在,检查是不是你记错了列名;如果是拼写/格式问题,修正列名后再操作;
  • 如果Total列属于iloc[:,9:33]的范围,那它已经被你之前的代码处理过,否则需要单独处理这个列。

第二步:修复数据类型转换逻辑

你的正则表达式只能提取整数,建议修改为支持小数的版本,同时处理可能的NaN值:

# 支持提取整数和小数的正则,转换为float后填充NaN为0(根据业务需求调整)
df.iloc[:,9:33] = df.iloc[:,9:33].apply(
    lambda x: x.str.extract('(\d+\.?\d*)', expand=False).astype(float).fillna(0)
)

转换完成后,可以检查数据类型和缺失值情况:

# 查看列类型
print(df.iloc[:,9:33].dtypes)
# 查看缺失值数量
print(df.iloc[:,9:33].isna().sum())

第三步:正确执行求和操作

确认列存在且类型正确后,执行求和:

if 'Total' in df.columns:
    # 默认skipna=True会自动忽略NaN,也可以明确指定
    amount = df['Total'].sum(skipna=True)
    print(amount)
else:
    print("提示:未找到'Total'列,请检查列名是否正确")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:22:11