当前位置:

首页 > 编程开发 > Pandas 中基于字典映射实现列的最小值计算并新增结果列

Pandas 中基于字典映射实现列的最小值计算并新增结果列

利用Pandas将字典映射的转换因子与DataFrame进行批量乘法,通过对齐索引映射、广播乘法、按列求最小值及安全对齐(避免缺失值),为每个目标项计算可转换源项经缩放后的最小值,并作为新列添加到原表中。

本文介绍如何利用 pandas 将字典中定义的转换因子与 dataframe 中对应项的数值进行批量乘法运算,并为每一行计算其可转换项中的最小值,最终作为新列添加到原表中。

说到数据分析中的动态转换,很多场景都离不开“外部映射”这个操作——比如单位换算、价格系数、权重因子,这些映射关系通常以字典形式存在,需要和主表中的数据做批量运算,然后进一步聚合出最小值、最大值之类的统计量。今天咱们就拆解一个典型场景:给定一个转换因子字典 data 和一个主数据表 df,目标是为 df 中每个 Item 计算其“可被转换项”的 Col1 值经系数缩放后的最小值,最后把结果存进新列 Minc_Col1。

整个过程其实就四个关键步骤,理解之后会发现 Pandas 的向量化操作非常优雅。

✅ 核心思路解析

  • 对齐映射:字典 data 的行索引(比如 'Item5'、'Item6')需要和 df 中 Col0 的值匹配,这样才能拿到对应的 Col1 数值作为基础值。
  • 广播乘法:用 DataFrame.mul(..., axis=0) 沿行方向把 data 的每一行乘以对应的 Col1 值,生成一个转换后的矩阵。
  • 按列求最小:因为 data 的列代表目标项(比如 'Item1'、'Item2'),所以对乘法结果按列取 min(),就能得到每个目标项能获得的最小转换值。
  • 安全对齐:那些没出现在 data.index 中的 df['Col0'] 项(比如 'Item3'、'Item5'、'Item6'),会导致部分乘积变成 NaN,而 min() 默认会跳过 NaN;如果一整列全是 NaN,结果就是 NaN,符合预期。

? 完整实现代码

import pandas as pd# 转换因子字典(行=源项,列=目标项)data = {    'Item1': {'Item5': 10, 'Item6': 100, 'Item4': 1},     'Item2': {'Item5': 10, 'Item6': 100, 'Item4': 1},     'Item4': {'Item5': 10, 'Item6': 100, 'Item9': 1}}data = pd.DataFrame(data).T  # 确保列为目标项,行为源项(与后续 map 对齐)# 主数据表df = pd.DataFrame({    'Col0': ['Item1', 'Item2', 'Item3', 'Item4', 'Item5', 'Item6'],    'Col1': [180, 250, 150, 205, 22, 2],    'Col2': [190, 150, 150, 200, 18, 2.5]})# 步骤1:以 Col0 为索引,便于 map 查找result = df.set_index('Col0')# 步骤2:用 data.index 映射 result['Col1'] 获取各源项的基准值(如 Item5→22)factors = data.index.map(result['Col1'])# 步骤3:广播乘法 + 按列取最小 → 得到每个目标项(Item1/Item2/Item4)的 min converted valuemin_values = data.mul(factors, axis=0).min()# 步骤4:assign 新列,重置索引,重命名列result = (    result.assign(Minc_Col1=min_values)    .reset_index()    .rename(columns={'Col0': 'Item', 'Col1': 'Price1', 'Col2': 'Price2'}))print(result)

输出结果:

    Item  Price1  Price2  Minc_Col10  Item1     180   190.0      200.01  Item2     250   150.0      200.02  Item3     150   150.0        NaN3  Item4     205   200.0      200.04  Item5      22    18.0        NaN5  Item6       2     2.5        NaN

⚠️ 注意事项与常见问题

  • 字典结构关键:data 必须是一个 pd.DataFrame,而且它的行索引(index)必须和 df['Col0'] 中的源项完全一致(比如 'Item5'、'Item6'),否则 map 会返回 NaN,导致整列乘积失效。
  • NaN 处理逻辑:min() 默认忽略 NaN;如果某个目标项(比如 'Item1')的所有可转换源项都没有对应的 Col1 值(全 NaN),结果就是 NaN。
  • 列名对齐:data.columns 应该覆盖所有需要计算 Minc_Col1 的目标项(比如 'Item1'、'Item2'、'Item4'),缺失的列不会出现在结果中。
  • 性能提示:这个方法基于向量化运算,处理万级以内的数据完全够用;如果数据量超大,可以考虑用 numba 加速或者分块处理。

? 进阶扩展(可选)

如果还想知道最小值是从哪个源项来的——比如发现 200 是由 'Item6' 贡献的——可以用 idxmin() 来追溯:

m = data.mul(factors, axis=0)min_series = m.min()source_item = m.idxmin()  # 返回每列最小值所在行索引(即源项名)# 合并到结果result = result.assign(    Minc_Col1=min_series,    Source_Item=source_item)

这套方案在可读性、健壮性和扩展性上都表现不错,算是 Pandas 里实现“映射-转换-聚合”类任务的标准套路了。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Pandas
相关文章 更多
codex安装windows教程桌面版完整安装步骤指南
codex安装windows教程桌面版完整安装步骤指南

详解如何在 Windows 电脑上通过 Microsoft Store 安装 Codex 桌面应用,包括启动登录、切换 Codex 模式、关联本地代码项目及终端环境配置的界面操作指引。

github配置ssh key windows
github配置ssh key windows

本文详解如何在Windows环境中使用PowerShell生成SSH密钥对,配置ssh-agent自动加载私钥,并将公钥安全添加至GitHub账户,最后通过git remote set-url切换为SSH地址,解决每次操作需输入账号密码的问题。

backdrop和background区别
backdrop和background区别

深入解析backdrop与background在网页开发及视觉设计中的区别。通过CSS代码示例,展示如何正确使用background设置元素背景,以及利用backdrop-filter创建弹窗遮罩模糊效果,避免概念混用。

windsurf ide download Windows版安装教程
windsurf ide download Windows版安装教程

详解 Windsurf IDE 在 Windows 系统的下载来源、安装步骤及首次启动界面。指导用户如何导入编辑器设置、打开项目文件夹及使用终端与 AI 功能,适合初次接触该工具的开发者阅读。

ServBay安装配置详细教程与操作指南
ServBay安装配置详细教程与操作指南

新手入门 ServBay 本地开发环境,详解安装包下载、Dashboard 状态监控、Packages 组件安装、Services 服务控制及 Websites 项目配置。掌握 .servbay.config 版本管理与日志排查技巧,快速搭建稳定的 PHP、Node.js 等多语言开发环境。

codekit环境配置指南从安装到环境搭建完整教程
codekit环境配置指南从安装到环境搭建完整教程

详解 CodeKit 在 macOS 下的安装步骤、项目导入方法、Sass与JavaScript编译设置及浏览器自动刷新功能,助您快速搭建高效的前端开发环境。

codex安装windows 命令行完整操作教程
codex安装windows 命令行完整操作教程

详解Windows环境下安装OpenAI Codex CLI的步骤,包括WSL环境检查、Node.js/npm配置、npm全局安装命令及首次启动验证,适合开发者快速上手。

NativeRest环境配置要求与完整操作教程
NativeRest环境配置要求与完整操作教程

学习如何配置 NativeRest REST API 客户端。涵盖 Windows/macOS/Linux 安装后的工作区创建、环境变量管理、请求编辑及响应查看步骤,帮助开发者快速完成基础环境搭建与连通性测试。

CSS设置透明度的注意事项有哪些?opacity属性详解
CSS设置透明度的注意事项有哪些?opacity属性详解

深入解析CSS中设置透明度的核心属性opacity,剖析子元素继承、事件穿透、层叠上下文等关键注意事项,并提供与rgba、hsla的实用选型对比。

flutter页面传值到后台的方法及示例代码
flutter页面传值到后台的方法及示例代码

flutter页面传值到后台的完整实现方法及示例代码,帮助读者快速掌握相关技术要点。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
WPS Office macOS版
WPS Office macOS版
macOS

WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,

Shapr3D macOS版
Shapr3D macOS版
Mac

Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

REAPER macOS版
REAPER macOS版
Mac

REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

WINDOWS 更多
Autodesk Fusion Windows版
Autodesk Fusion Windows版
Windows

Autodesk Fusion 是面向产品设计与制造的云连接开发平台,在统一环境中整合三维 CAD、CAM、CAE、PCB、工程图、数据管理和团队协作功能,适合产品设计师、机械工程师、电子工程师及加工制造团队完成从概念建模、验证分析到生产交

Archicad Windows版
Archicad Windows版
Windows

Archicad 是 Graphisoft 面向建筑师、设计师、工程师及 BIM 团队开发的建筑信息模型平台。它把三维建筑建模、施工文档、数据管理、专业协调、实时协作和可视化集中在统一项目环境中,适合从概念方案到施工交付的完整建筑设计流程。

Vectorworks Architect Windows版
Vectorworks Architect Windows版
Windows

Vectorworks Architect 是面向建筑师、室内设计师和建筑顾问的综合设计与BIM平台,覆盖概念草图、二维制图、三维建模、施工文档、数据报表、可视化及开放式协作。它强调自由造型与数据化建筑对象并存,