如何在Python中去重并按分组转换为JSON格式字典
发布时间 - 2025-12-30 00:00:00 点击率:次本文介绍如何使用pandas对dataframe中指定列组合去重后,按主键(如name)聚合series值为无重复列表,并最终输出标准json兼容的字典结构。
在数据处理中,常需将扁平化的表格结构(如含重复项的Name-Series映射)转换为嵌套的键值结构——即每个唯一Name对应一个去重后的Series值列表,最终以Python字典(可直接json.dumps()序列化)形式呈现。核心步骤分为两步:去重 + 分组聚合。
✅ 推荐方案:drop_duplicates() + groupby().agg(list)
最简洁高效的方式是先全局去重,再按目标列分组并聚合为列表:
import pandas as pd
# 示例数据
df = pd.DataFrame({
'Name': ['A', 'B', 'A', 'A', 'B'],
'Series': ['A1', 'B1', 'A2', 'A1', 'B2']
})
# 去重后分组聚合 → 字典
result = df.drop_duplicates().groupby('Name')['Series'].agg(list).to_dict()
print(result)
# 输出: {'A': ['A1', 'A2'], 'B': ['B1', 'B2']}⚠️ 注意:drop_duplicates() 默认对整行去重,确保 (Name, Series) 组合唯一;若DataFrame含其他无关列(如ID、时间戳),建议显式筛选关键列: result = df[['Name', 'Series']].drop_duplicates().groupby('Name')['Series'].agg(list).to_dict()
? 替代方案:groupby().agg(lambda x: x.unique().tolist())
若需保留原始分组逻辑(例如后续需同时聚合多列),可直接在agg中调用unique():
result = df.groupby('Name')['S
eries'].agg(lambda x: x.unique().tolist()).to_dict()此方式不依赖前置去重,语义更明确(“每组内Series去重后转列表”),但性能略低于先全局去重再分组。
? 进阶:排序与JSON导出
如需列表按字母/数值顺序排列,可在聚合时加入sorted():
result = df.groupby('Name')['Series'].agg(
lambda x: sorted(x.unique().tolist())
).to_dict()
# 输出: {'A': ['A1', 'A2'], 'B': ['B1', 'B2']}(已排序)最终结果为标准Python字典,可直接用于JSON序列化:
import json
json_str = json.dumps(result, indent=2)
print(json_str)
# {
# "A": ["A1", "A2"],
# "B": ["B1", "B2"]
# }✅ 总结:优先使用 df.drop_duplicates().groupby(...).agg(list).to_dict() —— 简洁、高效、可读性强;当需灵活控制每组去重逻辑或处理多列时,选用 x.unique().tolist() 方案。两者均能精准生成符合要求的嵌套JSON结构。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
,交易猫的商品怎么发布到网站上去?
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
微信小程序 canvas开发实例及注意事项
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
深圳网站制作平台,深圳市做网站好的公司有哪些?
Android 常见的图片加载框架详细介绍
音响网站制作视频教程,隆霸音响官方网站?
PythonWeb开发入门教程_Flask快速构建Web应用
公司门户网站制作流程,华为官网怎么做?
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
Python文件操作最佳实践_稳定性说明【指导】
详解Android中Activity的四大启动模式实验简述
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
高防服务器租用指南:配置选择与快速部署攻略
如何快速生成高效建站系统源代码?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
南京网站制作费用,南京远驱官方网站?
iOS发送验证码倒计时应用
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
Laravel如何处理文件下载请求?(Response示例)
如何选择PHP开源工具快速搭建网站?
PHP 500报错的快速解决方法
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Python结构化数据采集_字段抽取解析【教程】
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
北京的网站制作公司有哪些,哪个视频网站最好?
如何快速建站并高效导出源代码?
Python3.6正式版新特性预览
昵图网官网入口 昵图网素材平台官方入口
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
在centOS 7安装mysql 5.7的详细教程
Laravel如何使用Gate和Policy进行授权?(权限控制)
如何自定义建站之星模板颜色并下载新样式?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何在VPS电脑上快速搭建网站?
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
如何将凡科建站内容保存为本地文件?
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
网站页面设计需要考虑到这些问题
如何在腾讯云服务器快速搭建个人网站?
用v-html解决Vue.js渲染中html标签不被解析的问题
上一篇: 小米网站制作干花视频,小米花怎么做干花?
上一篇: 小米网站制作干花视频,小米花怎么做干花?


eries'].agg(lambda x: x.unique().tolist()).to_dict()