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

Pandas迭代构建临时DataFrame报错KeyError,如何拆分气象Excel数据?

解决按站点编码拆分气象Excel数据的问题

一、修复迭代构建临时DataFrame的代码

你遇到的KeyError:0是因为planilha_1[ind]是按列名索引,而非行索引。要正确获取单行数据并保持DataFrame格式,需要用loc[[ind]](按行标签取)或iloc[[ind]](按行位置取)。修改后的代码如下:

import pandas as pd

# 读取Excel文件,替换为你的实际文件路径
planilha_1 = pd.read_excel("气象数据.xlsx")
# 为空表直接退出,避免后续报错
if planilha_1.empty:
    print("文件为空,无需处理")
    exit()

# 初始化第一个站点编码和临时DataFrame
est = planilha_1.loc[0, 'EstacaoCodigo']
ind = 0
planilha_temp = planilha_1.loc[[ind]]
ind += 1

# 循环遍历同编码的行,增加索引越界判断
while ind < len(planilha_1) and planilha_1.loc[ind, 'EstacaoCodigo'] == est:
    # 用loc[[ind]]获取单行DataFrame,保证与临时表格式一致
    planilha_temp = pd.concat([planilha_temp, planilha_1.loc[[ind]]], axis=0, ignore_index=True)
    ind += 1

# 输出结果
print(planilha_temp)

关键说明

  • 使用ignore_index=True重置临时表索引,避免重复索引问题
  • 增加ind < len(planilha_1)判断,防止循环时索引越界

二、更高效的分组拆分方案

逐行循环效率极低(尤其是数据量大时),推荐直接使用Pandas的groupby功能,自动按EstacaoCodigo分组并生成子文件:

import pandas as pd

planilha_1 = pd.read_excel("气象数据.xlsx")

# 按站点编码分组,遍历每个分组生成子文件
for codigo, grupo_df in planilha_1.groupby('EstacaoCodigo'):
    # 生成以站点编码命名的子文件,index=False不保存行索引
    grupo_df.to_excel(f"站点_{codigo}_气象数据.xlsx", index=False)

方案优势

  • 代码简洁,无需手动处理分组边界
  • 底层优化的分组逻辑,比逐行循环效率高数倍
  • 自动覆盖所有站点,不会遗漏数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:00:15