You need to enable JavaScript to run this app. Python如何基于多列匹配规则填充指定列的空值数据
优惠活动
大模型
产品
解决方案
定价
更多

Python如何基于多列匹配规则填充指定列的空值数据

实现方案

前置注意事项

首先需要确保数据中的空值是pandas可识别的np.nan或pd.NA类型,若你的数据中是字符串格式的「空值」,先执行替换:

import pandas as pd
import numpy as np
df = df.replace('空值', np.nan)

核心实现代码

你的需求可以通过groupby+transform+fillna的组合实现,逻辑是按三个匹配字段分组后,取每组内目标字段的第一个非空值填充同组的所有空值:

# 定义需要填充的目标字段列表
fill_columns = ['E-COM1', 'E-COM2', 'E-RES1']
# 按ID、ID_2、CIRCUIT三个字段分组,完成填充
df[fill_columns] = df.groupby(['ID', 'ID_2', 'CIRCUIT'])[fill_columns].transform(
    lambda group: group.fillna(group.first())
)

结果验证

以你提供的示例数据为例,执行代码后输出结果如下:

IDID_2CIRCUITE-COM1E-COM2E-RES1
453453424254453233
453453424254453233

常见问题排查

如果你之前执行fillna不生效,大概率是以下原因:

  • 空值为字符串格式,未转为pandas可识别的空值类型
  • 分组时未完整包含三个匹配字段,导致分组范围错误
  • 未搭配transform方法使用,导致分组计算后的结果无法正确对齐原表索引

内容的提问来源于stack exchange,提问作者Jordan P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 03:54:02