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

如何对含多数据类型的Pandas DataFrame求和并忽略无数字Excel工作表

解决方案

一、仅对DataFrame数值列求和

你触发的类型错误是因为df.values.sum()会尝试把所有列(包括字符串列)的元素相加,字符串和数字无法直接拼接。解决方法是先筛选出所有数值类型的列,再求和:

代码示例

# 筛选所有数值类型的列(int、float等)
numeric_df = df.select_dtypes(include=['number'])
# 计算所有数值的总和
total_sum = numeric_df.values.sum()
print(total_sum)

更简洁的写法

total_sum = df.select_dtypes(include='number').sum().sum()
print(total_sum)

解释:select_dtypes(include=['number'])会自动过滤掉字符串列,确保后续求和操作只针对数值类型。


二、忽略Excel中无数字的工作表

要实现自动跳过没有存储有效数字的工作表,可以遍历所有工作表,判断是否存在非空的数值列,再决定是否处理:

代码示例

import pandas as pd

excel_workbook = "你的Excel文件路径.xlsx"
# 存储有效工作表的DataFrame
valid_sheets = {}

with pd.ExcelFile(excel_workbook) as xls:
    for sheet_name in xls.sheet_names:
        temp_df = pd.read_excel(xls, sheet_name=sheet_name)
        # 筛选数值列
        numeric_cols = temp_df.select_dtypes(include=['number'])
        # 判断是否存在非NaN的有效数值(若所有数值列全为NaN则跳过)
        if not numeric_cols.dropna(how='all').empty:
            valid_sheets[sheet_name] = temp_df
            # 可选:直接计算该工作表的数值总和
            sheet_total = numeric_cols.sum().sum()
            print(f"工作表 {sheet_name} 数值总和:{sheet_total}")

解释:

  • pd.ExcelFile()用于高效遍历Excel的所有工作表
  • numeric_cols.dropna(how='all')会移除所有行都是NaN的数值列,若结果不为空,说明该工作表存在有效数字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:54:43