如何将数据集同列NA值替换为对应分组的匹配有效值
按维度填充数据集NA值实现方案
你不需要写复杂的if判断,这类「固定分组维度下属性值恒定」的缺失值填充,用现成的分组填充方法就能快速实现,下面给两种最常用的实现路径:
方案1:Python + Pandas 实现(适合大数据量场景)
这是处理表格数据效率最高的方式,核心逻辑是按NAME+COMMITTEE分组,同一个人在同一个委员会的角色、董事数、其他董事会任职数都是固定值,直接在组内补全空值即可。
- 先导入依赖、读入数据,把字符串格式的"NA"转成标准空值:
import pandas as pd import numpy as np # 替换成你自己的数据集路径 df = pd.read_csv("your_board_data.csv") # 如果读入的NA是字符串格式,先转成标准空值 df = df.replace("NA", np.nan) - 执行分组填充,用前向填充+后向填充兜底,避免空值在组内首尾位置漏填:
# 声明需要填充的属性列 need_fill_cols = ["ROLENAME", "NUMBER DIRECTORS", "TOTAL OTHER BOARDS"] # 按人员+委员会分组,组内补全空值 df[need_fill_cols] = df.groupby(["NAME", "COMMITTEE"])[need_fill_cols].transform( lambda col: col.ffill().bfill() )
填充完的结果和你给出的期望输出完全一致,不需要逐行写判断逻辑,数据量越大这个方法的效率优势越明显。
方案2:Excel 实现(小数据量无需写代码)
如果你的数据量不大,直接用Excel自带功能就能完成:
- 全表选中,先按
NAME升序、COMMITTEE升序、YEAR升序做排序,把同一个人同一个委员会的行排到一起 - 选中所有需要填充的列区域,按
Ctrl+G调出定位窗口,选择「空值」后确定,会一次性选中所有NA对应的空单元格 - 直接输入公式引用同列上一个单元格(比如第一个选中的空单元格在B3,就输入
=B2),输入完按Ctrl+Enter,会给所有选中的空单元格批量填充对应公式 - 最后把填充完的列整列复制,右键选择「粘贴为值」,避免后续排序打乱公式引用即可。
内容的提问来源于stack exchange,提问作者Robbert
相关产品推荐
相关产品推荐

