




本文介绍如何利用 `map()` 和 `fillna()` 高效填充 dataframe 中缺失的 value 值——当某行 value 为 none 时,自动查找其 parent 键对应行的 value 值进行填充,形成层级继承关系。
在数据处理中,常遇到具有父子层级关系的表格结构(如组织架构、配置继承、依赖树等),其中子项的某些字段可能为空,需从其指定的父项中继承值。Pandas 提供了简洁而高效的向量化方案来实现这一逻辑,无需循环或递归。
import pandas as pd import numpy as np # 构造原始数据(注意:Value 列含 None 和字符串 "434",需统一类型以保证一致性) data = [['Key1', 'Key10', 246], ['Key2', 'Key1', None], ['Key3', 'Key14', "434"]] df = pd.DataFrame(data, columns=['Key', 'Parent', 'Value']) # 关键步骤:构建 Key→Value 映射并填充 mapping_dict = dict(df[['Key', 'Value']].values) df['Value'] = df['Value'].fillna(df['Parent'].map(mapping_dict)) print(df)
输出:
Key Parent Value 0 Key1 Key10 246 1 Key2 Key1 246 2 Key3 Key14 434
通过这一模式,你可以在不引入额外依赖的前提下,快速实现轻量级的层级值继承逻辑,是 Pandas 数据清洗与关系补全的经典范式之一。