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

如何从三级嵌套字典提取值,生成分季节指定格式的Pandas DataFrame

处理三级嵌套字典生成分季节的Pandas DataFrame

问题背景

手里有个三级嵌套字典:

  • 第一层键:1(冬季)、2(春季)、3(夏季)、4(秋季)
  • 第二层键:2005到2018的年份
  • 第三层键:0到23的小时数,对应的值是该季节、该年份下的小时均值

之前写的代码生成的结果不符合预期:

df = pd.DataFrame.from_dict({(i, j, k): pm_10_abs_season[i][j][k] for i in pm_10_abs_season.keys() for j in pm_10_abs_season[i].keys() for k in pm_10_abs_season[i][j]}, orient = 'index')

想要的是四个分季节的DataFrame,每个结构为:

  • 行:2005到2018的年份
  • 列:Hour 0、Hour 1……Hour 23

解决方法

直接按季节拆分处理,每个季节单独构造宽格式DataFrame就行:

import pandas as pd

# 给季节键对应上中文名,方便后续识别
season_map = {1: '冬季', 2: '春季', 3: '夏季', 4: '秋季'}
season_dfs = {}

# 遍历每个季节
for season_key in pm_10_abs_season:
    # 取出当前季节下所有年份的小时数据
    year_hour_data = pm_10_abs_season[season_key]
    # 直接把年份作为索引,小时数据作为列生成DataFrame
    df = pd.DataFrame.from_dict(year_hour_data, orient='index')
    # 把列名改成Hour 0、Hour 1的格式
    df.columns = [f'Hour {hour}' for hour in df.columns]
    # 给索引命名为Year
    df.index.name = 'Year'
    # 把生成的DataFrame存进字典,用季节名当键
    season_dfs[season_map[season_key]] = df

# 调用示例:取出冬季的DataFrame
winter_df = season_dfs['冬季']
print(winter_df)

为什么原来的代码不行?

你之前的代码把「季节、年份、小时」三个维度都拼成了索引元组,生成的是长格式的单列DataFrame(每一行对应一个(季节,年份,小时)的单一值),而我们需要的是每个季节单独的宽格式(年份为行,小时为列),所以得按季节拆分后分别构造。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:45:39