You need to enable JavaScript to run this app. pandas for循环遍历Excel多表 如何分表独立统计指定国家污染值
优惠活动
大模型
产品
解决方案
定价
更多

pandas for循环遍历Excel多表 如何分表独立统计指定国家污染值

问题根源定位
  • 读取逻辑缺失:原代码的pd.read_excel没有指定要读取的工作表,默认仅加载Excel文件的第一个工作表,后续循环遍历6个表名的过程中,从未切换读取的数据源,始终在重复计算第一个表的数值
  • 累加逻辑错误:累计求和的变量resultM1定义在工作表循环的外部,所有工作表的计算共用同一个计数器,切换工作表时没有重置计数,最终输出的是多轮重复累加得到的全局总和,完全不是单表的统计值
修正代码实现

调整核心逻辑,同时替换低效的逐行遍历写法,提升运行效率:

import pandas as pd

excel_path = 'C:/Users/julia/OneDrive/Documents/python assignment/2016 data -EU values.xlsx'
# 注意保留原表名中的尾随空格,避免读取Excel时找不到对应工作表
target_sheets = ["PM10 ", "PM2.5", "O3 ", "NO2 ", "BaP", "SO2"]
# 预存统计结果,后续绘图可直接调用
stats_dict = {}

for sheet in target_sheets:
    # 每次循环加载当前对应的独立工作表数据
    df = pd.read_excel(excel_path, sheet_name=sheet, skiprows=6)
    # 直接筛选马耳他的行,对污染水平列求和,无需逐行遍历
    malta_sum = df.loc[df['Country'] == 'Malta', 'AirPollutionLevel'].sum()
    # 去掉表名的尾随空格做键,匹配预期的输出格式
    clean_sheet_name = sheet.strip()
    stats_dict[clean_sheet_name] = malta_sum
    # 逐表输出统计结果
    print(f"{clean_sheet_name} {malta_sum:.0f}")
实现效果说明

修正后的代码会完全匹配你预期的输出形式:

PM10 142
PM2.5 53
O3 21
NO2 3
BaP 21
SO2 32

同时预存在stats_dict里的结果可以直接用于后续绘图,无需重复读取Excel文件。
注意:保留原表名中的尾随空格是因为你提供的表名列表里部分条目(如"PM10 "、"O3 ")存在尾随空格,如果和Excel内实际的工作表名不匹配,pd.read_excel会报错,只需要确保列表里的表名和Excel内的实际名称完全一致即可。


内容的提问来源于stack exchange,提问作者Julia Micallef Filletti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 11:06:03