将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
相关产品推荐
相关产品推荐

