
本文详细介绍了如何利用 Pandas 库高效地根据一个字典来聚合 DataFrame 中的列。通过将原始列名映射到新的分组键,并结合 `rename` 和 `groupby.sum` 方法,或者在较新版本 Pandas 中采用转置 (`.T`) 的策略,我们可以实现将多个指定列按行求和并创建新列的需求,避免了传统循环的低效,提升了代码的简洁性和执行效率。
在数据处理中,我们经常会遇到需要将 DataFrame 中的多列按照某种规则进行聚合,生成新的列。例如,给定一个 DataFrame 和一个字典,该字典的键代表新的列名,值则是一个包含现有列名的列表,表示这些现有列需要按行求和以构成新的列。传统上,这可能通过循环实现,但在 Pandas 中,有更“Pythonic”且高效的向量化方法。
假设我们有一个 Pandas DataFrame,其中包含多列数值数据。同时,我们还有一个字典,它定义了如何将这些列进行分组和求和。
示例数据:
import pandas as pd
df = pd.DataFrame([[4,8,52,7,54],[0,20,2,21,35],[2,33,12,1,87]], columns = ['A', 'B', 'C', 'D', 'E'])
dic = {'x':['A','D'], 'y' : ['E'], 'z':['B','C']}
print("原始 DataFrame:")
print(df)
print("\n聚合字典:")
print(dic)输出:
原始 DataFrame:
A B C D E
0 4 8 52 7 54
1 0 20 2 21 35
2 2 33 12 1 87
聚合字典:
{'x': ['A', 'D'], 'y': ['E'], 'z': ['B', 'C']}我们的目标是创建一个新的 DataFrame,其中包含 'x', 'y', 'z' 三列。列 'x' 的值是原始 DataFrame 中 'A' 和 'D' 列的按行和;列 'y' 是 'E' 列的值;列 'z' 是 'B' 和 'C' 列的按行和。
这种方法的核心思想是:首先创建一个反向映射字典,将原始列名映射到它们所属的新分组名。然后,利用 df.rename(columns=d2) 临时“重命名”列,使得属于同一分组的列拥有相同的名称。最后,使用 groupby(level=0, axis=1).sum() 对这些具有相同名称的列进行按行求和。
ViiTor AI
一个强大的多语言AI语音合成和视频转译平台
9414
查看详情
创建反向映射字典 d2: 这个字典将原始 DataFrame 的每个列名(如 'A', 'D')映射到其在结果 DataFrame 中对应的列名(如 'x')。
d2 = {v:k for k,l in dic.items() for v in l}
print("\n反向映射字典:")
print(d2)输出:
反向映射字典:
{'A': 'x', 'D': 'x', 'E': 'y', 'B': 'z', 'C': 'z'}重命名列并进行分组求和:df.rename(columns=d2) 会将 DataFrame 的列名根据 d2 进行转换。例如,'A' 和 'D' 都会被临时命名为 'x'。 groupby(level=0, axis=1).sum() 的作用是:
out = df.rename(columns=d2).groupby(level=0, axis=1).sum()
print("\n解决方案一结果:")
print(out)输出:
解决方案一结果:
x y z
0 11 54 60
1 21 35 22
2 3 87 45在某些较新的 Pandas 版本中,直接在 groupby 中使用 axis=1 可能会被弃用或推荐使用其他方法。一个等效且兼容性更好的方法是先转置 DataFrame,然后在行上(即原列)进行分组操作,最后再转置回来。
创建反向映射字典 d2: 与解决方案一相同,首先创建这个字典。
d2 = {v:k for k,l in dic.items() for v in l}转置、重命名、分组求和并再次转置:
out_transposed = df.T.rename(d2).groupby(level=0).sum().T
print("\n解决方案二(转置)结果:")
print(out_transposed)输出:
解决方案二(转置)结果:
x y z
0 11 54 60
1 21 35 22
2 3 87 45通过掌握这些 Pandas 技巧,您可以更高效、更简洁地完成 DataFrame 列的聚合任务,从而提升数据处理的效率和代码的可维护性。
以上就是使用 Pandas 根据字典映射聚合 DataFrame 列的详细内容,更多请关注其它相关文章!
# 其中包含
# 网络营销就是seo.
# 网站灰色推广
# 怎么在外国推广我的网站
# seo课程图片
# 高淳区短视频seo
# 信息化关键词排名效果
# 百度营销后台推广登陆
# 昭通关键词排名优化方案
# 视频如何做营销推广
# 华山街道seo网站推广
# python
# 是一个
# 创建一个
# 会将
# 数据处理
# 几种
# 浮点
# 在这里
# 指的是
# 重命名
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
汽水音乐网页端访问 汽水音乐官方网页直达
Python定时发送QQ消息
C++ priority_queue怎么用_C++优先队列底层实现与自定义比较器
解决Pandas DataFrame高度碎片化警告:高效创建多列的策略
西瓜视频怎么查看访客记录_西瓜视频访客记录查看方法
Flexbox布局中Stencil组件宽度不显示问题解析与:host尺寸控制
申通快递查询 申通物流快递单实时查询入口
TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法
CSS动画如何实现图标旋转并放大_transform rotate scale @keyframes实现
《王者荣耀世界》英雄获取攻略
易车网官网直达入口 易车网在线登录入口
Go语言反射机制:如何访问被嵌入结构体遮蔽的方法
房产|直播|视频号怎么认证开通?|直播|需要什么资质?
Dagster资产间数据传递与用户配置管理教程
Golang如何实现HTTP请求重试机制_Golang HTTP请求错误处理策略
虫虫漫画绿色安全入口_虫虫漫画绿色安全入口安全看漫画
mysql触发器如何编写_mysql触发器编写规范与代码示例讲解
阿里云共享相册入口在哪
Win10截图远程协助 Win10远程桌面截屏法【场景应用】
c++如何实现一个简单的RPC框架_c++远程过程调用原理与实践
《单词速记宝》设置学习计划方法
荣耀magicv5怎么上手测评
百度识图图像分析 百度识图识别平台
《火花chat》搜索好友方法
iPhone16Plus参数配置如何调整声音_iPhone16Plus参数配置声音调整详细方法
CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化
AO3永久镜像入口开放_AO3最新网址兼容所有浏览器
抖音号显示企业机构号是什么意思?企业机构号申请条件是什么?
如何通过settings.json个性化您的VS Code体验
毒蘑菇VOLUMESHADER_BM官网首页登录入口 毒蘑菇VOLUMESHADER_BM官网首页登录入口说明
谷歌邮箱怎么换绑定邮箱Gmail安全备份邮箱修改方法
微信注销后银行卡解绑了吗_微信注销后银行卡解绑状态
小红书网页版首页入口 小红书网页版电脑端官方登录链接
PSD转AI文件的简单方法
解决CSS background 属性中 cover 关键字的常见误用
菜鸟驿站的取件码忘了怎么办 手机快速查询指南
微信网页版在线登录 微信网页版在线使用入口
Go语言中方法与接收器:指针和值类型的调用机制详解
口腔诊所管理软件推荐
4399正版网页版入口高清直达链接
Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】
睡觉时心跳快是什么原因 夜间心悸如何应对
《广发易淘金》国债逆回购操作教程
抖音号升级企业号怎么改名字?升级企业号有哪些好处?
有道AI翻译入口 智能写作官方网站入口
C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用
一加 Ace 6V 快充无法启用_一加 Ace 6V 充电优化
AO3中文版手机快速通道_AO3最新稳定链接更新
Apple Music无故扣费引质疑
composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?
2025-11-04
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。