本文介绍如何在有序pandas dataframe中,将level=5的id向前向后传播至其后所有相邻level=8记录,从而生成upper_id列,适用于分组标题+子项的层级结构数据处理。
在处理具有隐式层级关系的有序表格数据时(例如:Level=5表示分组标题,Level=8表示该组下的明细项),常需将每个“标题行”的ID(如ID='A')自动填充到其后续所有“子项行”,直至下一个标题出现。这种需求本质上是按逻辑分组进行前向填充(forward fill),而非简单按索引或值分组。
Pandas提供了简洁高效的向量化解决方案,无需循环或groupby,核心思路是:识别所有Level=5所在行,提取其ID,再用ffill()向下传播。
df['Upper_ID'] = df['ID'].where(df['Level'] == 5).ffill()
该语句分三步执行:
== 5 → 生成布尔Series,标记所有标题行;✅ 优势:语义明确、性能优异、兼容任意顺序(只要数据按层级逻辑有序)、对缺失值鲁棒。
df['Upper_ID'] = df['ID'].where(df['Level'].diff(-1) < 0).ffill()
此方法利用diff(-1)计算当前行与下一行的Level差值,当差值为负(如5→8时差为-3),说明当前行为“上层标题”。虽然逻辑稍绕,但在Level不严格为5/8、而是存在多级(如3→5→8)且仅需捕获“降级起点”时更具泛化性。
通过这一技巧,你能在毫秒级完成千行级层级映射,显著提升数据预处理效率,是Pandas高阶索引操作的典型范例。
# pandas
# 标识符
# 循环
# 这一
# 但在
# 设为
# 适用于
# 能在
# 布尔
# 数据处理
# 再用
# 而非
# 如需
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
如何使用Golang读取日志文件_Golang bufio Scanner日志处理示例
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
Python解释执行模型_字节码流程说明【指导】
本地php环境打开php文件直接下载_浏览器解析php为下载的修复方法【解答】
Linux如何安装JDK11_Linux环境变量配置与Java开发环境搭建【教程】
Win11怎么设置虚拟内存最佳大小_Windows11性能选项自定义分页文件
Win11怎么开启移动热点_Windows11共享网络给手机设置教程
Win11怎么自动隐藏任务栏_Win11全屏显示设置【美化】
Win11怎么设置按流量计费_Win11限制后台流量消耗【网络】
LINUX的SELinux是什么_详解LINUX强制访问控制系统的入门与配置
Windows10如何更改任务栏高度_Win10解除锁定调整大小
Win11怎么清理C盘下载文件夹_Win11清理下载文件夹技巧【教程】
PHP 中如何在函数内持久修改引用变量所指向的目标
Linux如何挂载新硬盘_Linux磁盘分区格式化与开机自动挂载【指南】
php删除数据怎么加限制_带where条件删除避免全删【指南】
Win11怎么查看电脑配置_Win11硬件配置详细查询方法【详解】
Windows10如何重置此电脑_Windows10电脑重置方法【步骤】
如何关闭Win10自动更新更新_Win10系统自动更新双重关闭技巧
MAC怎么截图并快速编辑_MAC自带截图快捷键与标注工具使用【方法】
Mac如何修复应用程序权限问题_Mac磁盘工具修复权限【教程】
Win11时间格式怎么改成12小时制 Win11时间格式切换教程【步骤】
Win11怎样安装企业微信_Win11安装企业微信教程【步骤】
如何使用Golang log设置日志输出格式_Golang log日志格式示例
Win11怎么设置默认终端应用_Windows11开发者选项终端
Win11怎么关闭自动更新 Win11永久关闭系统更新的有效方法【技巧】
php485返回数据不完整怎么办_php485数据分包重组处理方法【教程】
MAC怎么在照片中添加水印_MAC自带编辑工具文字水印叠加【方法】
Win10任务栏天气和资讯怎么关闭 Win10禁用新闻和兴趣功能【教程】
Win11怎么设置任务栏大小_Windows11注册表修改TaskbarSi值
Go 中 defer 语句在 goroutine 内部不返回时不会执行
Win10怎么卸载爱奇艺_Win10彻底卸载爱奇艺方法【步骤】
Win11怎么清理C盘OneDrive缓存_Win11清理OneDrive缓存技巧【方法】
c++中的CRTP是什么 c++奇异递归模板模式【进阶】
Python网页解析流程_html结构说明【指导】
MAC怎么使用表情符号面板_MAC Emoji快捷键调用与符号查找【方法】
MAC如何启用访达侧边栏显示_MAC Finder偏好设置与常用目录添加【教程】
Win11怎么关闭透明效果_Windows11个性化颜色关闭透明
Win11如何设置开机问候语 Win11修改登录界面提示【技巧】
Mac如何备份到iCloud_Mac桌面与文稿文件夹云同步【设置】
Linux怎么禁止Root用户远程登录_Linux系统SSH加固与安全设置【教程】
Win11怎么禁用键盘自带键盘_Win11笔记本禁用内置键盘方法【教程】
php转exe用什么工具打包快_高效打包软件推荐【汇总】
Win11怎么调整屏幕亮度_Windows 11调节显示器亮度护眼设置【步骤】
电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】
如何从 Go 的 map[string]interface{} 中安全获取值
c++ nullptr与NULL区别_c++11空指针规范
如何使用Golang构建简易投票统计功能_Golang投票数据汇总与展示示例
Windows10系统怎么查看已安装更新_Win10控制面板卸载补丁
Win10系统映像怎么恢复 Win10使用系统映像还原电脑【指南】
Windows10系统怎么查看显卡驱动_Win10设备管理器驱动更新
2026-01-04
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。