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

如何基于数组值批量创建各年份对应的Pandas DataFrame

实现方案

不要手动逐行编写每个年份的处理逻辑,直接遍历所有年份值批量执行操作即可,完全避免重复代码,后续数据集新增年份时也无需调整代码。

最简实现可直接批量完成筛选、聚合、导出全流程:

import pandas as pd

# 读取全量数据集
df_all = pd.read_csv('https://raw.githubusercontent.com/dssgPT/Plotting-Good-DSSG/main/desafios/006_Incendios/area_ardida.csv')
years = df_all['year'].unique()

for year in years:
    # 筛选当前年份数据
    df_cur = df_all[df_all['year'] == year]
    # 按行政区、年份分组求和
    df_totals_cur = df_cur.groupby(["concelho", "year"]).sum(numeric_only=True)
    # 按年份命名导出文件
    df_totals_cur.to_csv(f'/content/drive/MyDrive/2022/DATAVIZ/dssg_{year}.csv')

补充说明

  • 如果你需要在内存中暂存所有年份处理后的结果供后续调用,不要硬编码df_2017这类独立变量,用字典统一存储管理更高效:
year_result = {}
for year in years:
    df_cur = df_all[df_all['year'] == year]
    df_totals_cur = df_cur.groupby(["concelho", "year"]).sum(numeric_only=True)
    year_result[year] = df_totals_cur
    # 可同步执行导出
    df_totals_cur.to_csv(f'/content/drive/MyDrive/2022/DATAVIZ/dssg_{year}.csv')

# 需要取指定年份结果时直接按键索引即可,例如取2017年的聚合结果
df_2017 = year_result[2017]
  • 聚合时传入numeric_only=True是为了适配pandas 1.5+版本的规则,避免非数值列参与求和触发警告或报错。
  • 如果后续需要为每个年份追加其他处理逻辑,直接在循环体内补充对应代码即可,无需重复编写数据筛选、分组的重复步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:45:34