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

将Pandas DataFrame转换为按Name/Year/Month分组的API格式

将Pandas DataFrame转换为层级化API字典格式

原始DataFrame定义

import pandas as pd

df = pd.DataFrame({
    'Year': [2023, 2024, 2022,2022, 2023,2025,2024,2025,2022,2023],
    'Name': ['John', 'Jim', 'John','Jim', 'John','Jim','John','Jim','John','Jim'],
    'Month': ['Jan', 'Jan', 'Feb','Jan', 'Jan','Feb','Jan','Jan','Feb','Feb'],
    'Day': [1, 2, 5,6, 7,4,8,24,13,15]
})

实现方法一:利用groupby+unstack快速转换

通过分组聚合后直接转为嵌套字典,代码简洁高效:

# 按Name→Year→Month分组,将Day聚合为列表
grouped_data = df.groupby(['Name', 'Year', 'Month'])['Day'].apply(list)
# 转换为多层嵌套字典
api_dict = grouped_data.unstack().unstack().to_dict(orient='index')

实现方法二:循环构建层级结构

如果需要更直观的控制逻辑,可通过嵌套循环手动构建字典:

api_dict = {}
# 第一层:按Name分组
for name, name_group in df.groupby('Name'):
    api_dict[name] = {}
    # 第二层:按Year分组
    for year, year_group in name_group.groupby('Year'):
        api_dict[name][year] = {}
        # 第三层:按Month分组,收集Day列表
        for month, month_group in year_group.groupby('Month'):
            api_dict[name][year][month] = month_group['Day'].tolist()

最终输出格式

两种方法都会得到符合Name→Year→Month→Day列表层级的字典,示例输出如下:

{
    "Jim": {
        2022: {"Jan": [6]},
        2024: {"Jan": [2]},
        2025: {"Jan": [24], "Feb": [4]}
    },
    "John": {
        2022: {"Feb": [5, 13]},
        2023: {"Jan": [1, 7], "Feb": [15]},
        2024: {"Jan": [8]}
    }
}

该格式可直接作为GET请求的响应数据返回给前端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:53:31