本文介绍在有序 dataframe 中,如何基于 level 列的层级关系(level 5 为分组头,level 8 为子项),将每个 level 5 对应的 id 向下广播填充至其后的所有 level 8 行,直至下一个 level 5 出现。
在处理具有嵌套结构的扁平化数据时(例如:分组标题 + 子记录),常需将“上级标识”(如 Level 5 的 ID)映射到其下属的所有“下级记录”(如后续连续的 Level 8 行)。Pandas 提供了简洁高效的向量化方案,无需循环或 groupby.apply,核心在于识别分组起点 + 前向填充(ffill)。
最直观、稳健且易读的方式是:仅保留 Level 为 5 的行对应的 ID 值,其余位置设为 NaN,再使用 ffill() 向下填充:
df['Upper_ID'] = df['ID'].where(df['Level'] == 5).ffill()
该语句执行逻辑如下:
5 生成布尔 Series,标记所有 Level 5 行;若实际数据中“上层”不严格等于 5(例如可能是任意比下层小的值),可改用差分检测下降趋势:
df['Upper_ID'] = df['ID'].where(df['Level'].diff(-1) < 0).ffill()
这里 diff(-1) 计算当前行与下一行的差值;当 Level 从高变低(如 8 → 5),差值为负,即 diff(-1)
最终结果完全符合预期:每个 Level 5 的 ID 成为其后所有 Level 8 行的 Upper_ID,清晰表达层级归属关系,为后续分组聚合、透视分析或导出结构化报告奠定基础。
# app
# 隐式转换
# pandas
# Object
# 整型
# 循环
# 组头
# 进阶
# 有效值
# 出现在
# 设为
# 布尔
# 自定义
# 可选
# 转换为
# 值为
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win11任务栏天气怎么关闭 Win11隐藏天气小组件图标【设置】
Win11怎么清理C盘下载文件夹_Win11清理下载文件夹技巧【教程】
如何在 Go 中判断变量是否为函数类型
Win11怎么设置快速访问主页_Windows11资源管理器文件夹选项
如何使用Golang搭建本地API测试环境_快速验证接口功能
如何使用Golang实现路由分组管理_Golang路由分组与权限控制方法
MAC怎么一键隐藏桌面所有图标_MAC极简模式切换与终端指令【方法】
Windows服务无法启动错误1067是什么_进程意外终止的解决方法
Win11任务栏怎么放到顶部_Win11修改任务栏位置方法【详细】
Win10怎样安装PPT模板_Win10安装PPT模板教程【步骤】
php接口返回数据乱码怎么办_php接口调试编码问题解决【指南】
Python对象比较与排序_魔术方法解析【教程】
PHP 中如何在函数内持久修改引用变量所指向的目标
php增删改查报错1054怎么办_字段名错误排查修复【解答】
如何使用Golang读取日志文件_Golang bufio Scanner日志处理示例
Win10如何备份注册表_Win10注册表备份步骤【攻略】
如何使用Golang理解结构体指针方法接收者_Golang修改字段实践
如何在Golang中验证模块完整性_Golanggo.sum校验与安全实践
如何使用Golang写入二进制文件_Golang io Write二进制写入示例
如何使用Golang实现微服务状态监控_Golang服务运行状态采集方法
Win11截图快捷键是什么_Win11自带截图工具使用技巧【汇总】
Win11怎么设置组合键快捷方式_Windows11自定义快捷键操作
c++如何判断文件是否存在_c++ filesystem库用法
如何在Golang中处理数据库事务错误_回滚和日志记录
微信里的php文件怎么变mp4_微信接收php转mp4操作步骤【操作】
如何在 ACF 中正确更新嵌套多层的 Group 字段子字段
Win11系统占用空间大怎么办 Win11深度瘦身清理指南【优化】
如何使用Golang安装API文档生成工具_快速生成接口文档
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
Python网页解析流程_html结构说明【指导】
Win11怎么设置ip地址_Windows 11手动配置网络IP教程【详解】
c++ std::atomic如何保证原子性 c++ CAS操作原理【底层】
c++中的可变参数模板(variadic templates)怎么用_c++模板编程黑魔法【C++11】
php下载安装后memory_limit怎么设置_内存限制调整【技巧】
C++友元类使用场景_C++类间协作设计方式讲解
PhpStorm怎么调试PHP代码_PhpStorm断点设置与调试启动步骤【指南】
Win11用户账户控制怎么关_Win11关闭UAC弹窗提示【设置】
Win11怎么开启剪贴板历史记录_Windows11 Win+V键使用技巧
如何从 Go 的 map[string]interface{} 中安全获取值
MAC怎么使用表情符号面板_MAC Emoji快捷键调用与符号查找【方法】
如何使用Golang sort排序切片_Golang sort排序方法示例
Win11如何暂停系统更新 Win11暂停更新最长时限设置【步骤】
如何使用Golang管理跨项目依赖_Golang多模块项目依赖实践
如何在Golang中捕获HTTP服务器错误_GolangHTTP Handler中error处理
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
Win11怎么设置默认邮件应用_Windows11应用关联Mail设置
Win11怎么查看电脑配置_Win11硬件配置详细查询方法【详解】
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
VSC怎样在Linux运行PHP_Ubuntu系统配置步骤【操作】
Windows蓝屏错误0x00000018怎么处理_驱动初始化错误解决
2026-01-04
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。