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

Python pandas如何通过代理键entry_id快速将JSON扁平化转为行?

方案1:使用Pandas实现(最简便)

直接用pivot方法实现长表转宽表,完全匹配你要的聚合逻辑:

import pandas as pd

# 原始数据直接转DataFrame
df = pd.DataFrame(data)
# 指定entry_id为聚合键,type字段转为列名,value转为对应列值
pivot_df = df.pivot(index="entry_id", columns="type", values="value")
# 缺失值填充为空字符串,重置索引把entry_id从索引转为普通列
pivot_df = pivot_df.fillna("").reset_index()
# 转成目标列表字典格式
output = pivot_df.to_dict("records")

输出的output完全符合你要求的格式。

方案2:纯Python实现(无第三方依赖,效率极高)

时间复杂度为O(n),仅需遍历原始数据1次,性能远高于嵌套循环实现:

from collections import defaultdict

# 收集所有存在的type字段,用于后续补全缺失值
type_set = {item["type"] for item in data}
entry_groups = defaultdict(dict)

# 单次遍历完成分组聚合
for item in data:
    entry_groups[item["entry_id"]][item["type"]] = item["value"]

# 生成最终结果,补全所有缺失字段
output = []
for entry_id, val_map in entry_groups.items():
    row = {"entry_id": entry_id}
    for t in type_set:
        row[t] = val_map.get(t, "")
    output.append(row)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:54:07