You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataFrame迭代处理问询:两关联列左列同值不重复场景的填充方法

类合并单元格稀疏DataFrame的处理方案

这类数据是Excel合并单元格导出后常见的存储格式,左列仅在取值变更时写入,同组后续行留空,处理的核心是将左列空值用同组的有效值补全,再进行后续迭代、分组操作。

步骤1:空值标准化

首先要确保左列的空白单元格被识别为pandas可处理的空值,避免空白字符串、空格等无法被填充逻辑识别:

import pandas as pd
import numpy as np

# 替换左列中所有全空白内容为NaN,示例中左列是姓名列,可替换为实际列名
df["姓名"] = df["姓名"].replace(r'^\s*$', np.nan, regex=True)

步骤2:向下填充同组有效值

用pandas内置的ffill()(向前填充)方法,直接用最近的非空值填充后续的空行:

# 向下填充左列空值
df["姓名"] = df["姓名"].ffill()

填充后每一行都会带有对应的左列取值,无需再在迭代时手动记录上一个非空值。

填充前后效果对比:

填充前姓名详细信息填充后姓名
张三年龄:25张三
NaN部门:技术部张三
NaN入职:2023张三
李四年龄:30李四
NaN部门:产品部李四

步骤3:迭代处理关联数据

填充完成后可以直接按左列分组迭代,处理同一分组的所有右列关联信息:

# sort=False保留原始数据的出现顺序,避免分组后顺序打乱
for name, detail_group in df.groupby("姓名", sort=False):
    # 取出当前姓名对应的所有详细信息
    details = detail_group["详细信息"].tolist()
    # 此处写入自定义业务处理逻辑
    print(f"{name}的信息:{details}")

注意事项

  • 填充前需要确认左列第一行是非空值,否则开头的空值会保留无法被填充
  • 如果部分左列空值属于真实缺失而非合并单元格导致的留空,需要先给这部分行手动打标记、填充指定值后再执行全局ffill(),避免错误覆盖

内容的提问来源于stack exchange,提问作者Tiange Hou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:10