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

如何将嵌套字典列表转换为指定格式的Pandas DataFrame?

优雅实现嵌套字典列表转分组聚合的Pandas DataFrame

我来给你一个简洁高效的方案,完美解决你提取动态水果名称(优先复数名)并按parent_id分组展示不同origin对应水果的需求:

步骤拆解

  1. 展开嵌套字典:用Pandas的json_normalize快速把嵌套的fruit字段平展到顶层,避免手动循环处理嵌套结构。
  2. 生成动态显示名称:创建一个新字段,优先使用plural_name,如果该字段为空则 fallback 到name,实现动态取数。
  3. 分组聚合去重:按parent_id和origin分组,聚合显示名称并自动去重,确保每组只保留唯一的水果名称。
  4. 整理成目标格式:可根据需要调整输出结构,比如把同一parent_id下的不同origin结果合并展示。

完整代码实现

import pandas as pd

# 你的原始数据
fruit_list = [
    {"id": 1, "fruit": {"parent_id": 1, "name": "Banana", "origin": "Brazil"}},
    {"id": 2, "fruit": {"parent_id": 1, "name": "Banana", "plural_name": "Bananas", "origin": "Africa"}},
    {"id": 3, "fruit": {"parent_id": 2, "name": "Orange", "origin": "Africa"}},
    {"id": 4, "fruit": {"parent_id": 2, "name": "Orange", "origin": "Africa"}},
    {"id": 5, "fruit": {"parent_id": 3, "name": "Apple", "plural_name": "Apples", "origin": "Africa"}},
    {"id": 6, "fruit": {"parent_id": 3, "name": "Apple", "plural_name": "Apples", "origin": "Brazil"}}
]

# 步骤1:展开嵌套字典
df = pd.json_normalize(fruit_list)

# 步骤2:生成动态显示名称(优先复数名,无则用普通名)
df["display_name"] = df["fruit.plural_name"].fillna(df["fruit.name"])

# 步骤3:分组聚合,按parent_id和origin分组,去重后合并名称
result_df = df.groupby(["fruit.parent_id", "fruit.origin"])["display_name"].unique().reset_index()

# 可选:把名称列表转成字符串(如果需要更友好的展示格式)
result_df["display_name"] = result_df["display_name"].apply(lambda x: ", ".join(x))

# 重命名列名更直观
result_df = result_df.rename(columns={
    "fruit.parent_id": "parent_id",
    "fruit.origin": "origin",
    "display_name": "fruit_name"
})

print(result_df)

输出结果

parent_id  origin fruit_name
0          1  Africa    Bananas
1          1  Brazil     Banana
2          2  Africa     Orange
3          3  Africa     Apples
4          3  Brazil     Apples

方案优势

  • 高效简洁:用json_normalize替代手动循环,处理嵌套数据更高效且代码更简洁。
  • 动态适配:通过fillna自动判断是否使用复数名,无需写复杂的条件判断。
  • 灵活扩展:分组聚合逻辑清晰,后续如果需要调整分组维度或聚合方式,只需修改groupby和聚合函数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:32:46