Python去重分组转JSON字典方法
作者:归人云淡风轻
时间:2026-01-28
浏览:0
本文介绍如何使用Pandas对DataFrame按某一列(如Name)分组,先去除重复项,再将另一列(如Series)聚合为无重复列表,最终输出符合JSON格式的嵌套字典。

本文介绍如何使用Pandas对DataFrame按某一列(如Name)分组,先去除重复项,再将另一列(如Series)聚合为无重复列表,最终输出符合JSON格式的嵌套字典。
在数据处理中,常需将扁平化的表格结构(如含重复组合的Name-Series关系)转换为层次化键值结构:以Name为键、对应去重后的Series值列表为值。这本质上是「分组→去重→聚合→序列化」四步操作。
最简洁高效的方式是结合 drop_duplicates() 与 groupby().agg(list):
import pandas as pd
# 示例数据
df = pd.DataFrame({
'Name': ['A', 'B', 'A', 'A', 'B'],
'Series': ['A1', 'B1', 'A2', 'A1', 'B2']
})
# 方案1:先全局去重,再分组聚合(推荐)
result = df.drop_duplicates().groupby('Name')['Series'].agg(list).to_dict()
print(result)
# 输出: {'A': ['A1', 'A2'], 'B': ['B1', 'B2']}该方案逻辑清晰:drop_duplicates() 移除所有完全重复行(避免同一Name-Series多次出现),再通过 groupby('Name')['Series'].agg(list) 将每个Name下的Series值聚合成列表,最后用 .to_dict() 转为标准Python字典——天然兼容 json.dumps()。
若需保留原始顺序但仅去重(不依赖全局去重),可改用 unique():
# 方案2:分组内去重(保持首次出现顺序)
result = df.groupby('Name')['Series'].agg(lambda x: x.unique().tolist()).to_dict()⚠️ 注意事项:
- 若DataFrame含多余列(如ID、Timestamp),务必先用 df[['Name', 'Series']] 显式选取目标列,避免 drop_duplicates() 因其他列差异误删有效组合;
- 如需结果中列表按字母或数值排序,可在聚合时嵌入 sorted():
result = df.groupby('Name')['Series'].agg( lambda x: sorted(x.unique().tolist()) ).to_dict() - 最终字典可直接用于JSON序列化:import json; json_str = json.dumps(result, indent=2)
此方法兼顾性能与可读性,适用于中等规模数据(百万行内),且无需额外依赖,是Pandas生态中的标准实践。
作者最新文章
荣耀MagicOS 11发布计划与Agent Harness架构解析
2026-09-08 19:23
AI重构企业业务架构:超聚变“智企”范式核心解析
2026-09-08 18:39
PDF合并工具怎么选?在线合并5步实操指南
2026-09-04 17:05
PDF图片压缩工具推荐与批量处理实操指南
2026-09-03 12:14
照片如何转成PDF格式?三种图片转PDF操作方法
2026-09-03 11:04
上一篇:
逆战未来PVP怎么玩-PVP技巧攻略
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































