Python去重分组转JSON字典方法
作者:归人云淡风轻
时间:2026-01-28
浏览:3
本文介绍如何使用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生态中的标准实践。
作者最新文章
AO3中文界面设置指南与核心功能使用教程
2026-10-14 23:28
解决win10运行3DMAX自动重启的方法
2026-10-13 17:08
哔哩哔哩投稿封面上传失败怎么解决
2026-10-13 15:55
漫蛙漫画官网免费漫画入口
2026-10-13 13:19
漫蛙漫画app免费下载安装最新版
2026-10-13 13:18
上一篇:
逆战未来PVP怎么玩-PVP技巧攻略
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多










































