在合并单元格导出、横向补录与数量缺测场景中,分析师面对的空格往往不是「这一行不该存在」,而是「值被落在邻近单元格」:地区只在分组首行有值、下面是空;同行左侧有编码、右侧空着;数量列偶发空单元格,无法分组或求和。
如果采用传统手工方式,只能下拉填充、逐格粘贴或写一列公式再覆盖,已有非空值容易被误改;把「填成 0」和「用均值填」混用,还会把类别列写成无法解释的数字。空 = NULL、空串、空白,口径稍不一致,复跑结果就会分叉。
DT-Bot 的 「缺失填充」 算子专为解决此类只补指定列空单元格、行数不变的问题而设计。它对齐常见的 fillna:沿轴传播(向下 / 向上 / 向左 / 向右)、写成常数、用均值 / 中位数 / 众数。默认就地改源表;写了结果名则写新表。不增列、不改列名。未说方向时默认纵向向下。
一、 核心能力与适用场景
「缺失填充」算子聚焦于空单元格补值、行集合不变,覆盖以下五大核心能力:
| 核心能力 | 解决什么业务问题 | 典型业务场景 |
|---|---|---|
| 向下填充 | 用上面最近一次非空值往下传播,已有非空值不动。 | 合并单元格导出后,地区只在首行有值、下面是空,用上面最近非空往下填。 |
| 向上填充 | 用下面最近一次非空值往上传播。 | 分组标记写在块末行,需要把地区从下往上补到空行。 |
| 横向传播(从左往右 / 向左) | 同行用邻近列非空把空格补上。 | 横向表从左往右把空的填上。 |
| 常数填充 | 把指定列的空单元格写成某个字、0 或明确的空。 | 数量空的填成 0。要写入的字(含 null)按原样写入。 |
| 统计量填充(均值 / 中位数 / 众数) | 用该列非空值的均值、中位数或出现最多的值填空。 | 数量列空的,用该列平均值填上。均值、中位数只填数值列。 |
二、 边界指南:它与相近算子有何区别?
在构建数据工作流时,理解算子之间的职责边界至关重要:
| 比较维度 | 「缺失填充」算子 | 「匹配填充」算子 | 「行操作」算子 |
|---|---|---|---|
| 主要定位 | 在本表内把空单元格补上,行数不变 | 按键从另一张表补列 | 空则用同行其它列算出来 |
| 输出机制 | 默认就地;写了结果名则写新表 | 就地或贴列,键对齐 | 就地更新单元格 |
| 典型动作 | 向下 / 向上 / 向左 / 向右、常数、均值 / 中位数 / 众数 | VLOOKUP 式按工号、SKU 取值 | 空则用单价 × 数量等公式写入 |
| 如何选择 | “地区空的,用上面最近非空往下填” | “按商品编码从价目表把供货价填回来” | “金额空则用单价 × 数量算出来” |
注意:把已有的 0 改成空,不是本节点。不增列、不改列名。
三、 提示词编写规范与公式
「缺失填充」算子支持自然语言直接表达,建议遵循以下标准的三要素编写公式:
【目标表】 + 【列与方法】 + 【结果名(可选)】
1. 目标表表达
- 单表精准点名:明确填哪一张表,例如
把 “地区明细” 的地区列空的,用上面最近一次非空往下填; - 默认当前流转表:若提示词中未显式提及表名,算子将默认继承上一节点连线流入的数据表。
2. 列与方法表达
- 点名列:填哪一列或哪几列;可一次点名多列一起向下填;
- 方向:向下 / 向上 / 向左 / 向右;未说方向时默认纵向向下;
- 常数:填成某个字、0;要写入的字(含 null)按原样写入,不要理解成「填成空」;
- 明确填空:只有明确说填成空 / 空串,才写成空;
- 统计量:用该列平均值、中位数、众数。均值、中位数只填数值列;众数按出现最多的非空值。
3. 空值口径与结果名
- 空 = NULL、空串、空白,这三类都会被填;
- 已有非空值不动,包括已经写着的 0;
- 不写结果名:就地改源表;写了结果名则写新表。
示例:
把 “地区明细” 的地区列空的,用上面最近一次非空往下填。
对应三段:
- 表:地区明细
- 列:地区;方法:向下填充
- 结果:就地改源表
四、 核心功能与图解实战
以下结合真实企业数据场景,展示「缺失填充」在不同需求下的处理效果:
场景 1:向下填充(合并单元格导出后的地区)
业务背景:地区列由合并单元格导出,只在每个地区的首行有值,下面是空。后续按地区分组前,必须用上面最近一次非空往下填;华北那行本来有值,不能被改写。
【处理前:地区明细】
| 地区 | 品类 | 金额 |
|---|---|---|
| 华东 | 饮料 | 10 |
| (空) | 零食 | 20 |
| (空) | 饮料 | 15 |
| 华北 | 零食 | 8 |
【执行提示词】
把 “地区明细” 的地区列空的,用上面最近一次非空往下填。
【处理后:地区明细(就地更新)】
| 地区 | 品类 | 金额 | 变更说明 |
|---|---|---|---|
| 华东 | 饮料 | 10 | 本来有值,不动 |
| 华东 | 零食 | 20 | 用上面最近非空「华东」填上 |
| 华东 | 饮料 | 15 | 用上面最近非空「华东」填上 |
| 华北 | 零食 | 8 | 本来有值,不动 |
逻辑详解:空的两行都变成华东。华北那行本来有值,不动。品类、金额未点名,保持原样。行数仍是 4 行。未说方向时,本能力也是默认的纵向向下。
场景 2:向上填充(块末标记往上补)
业务背景:同一张地区明细里,若标记写在块的下方,需要用下面最近非空往上填;已有「华东」「华北」的行仍然不动。
【处理前:地区明细】
| 地区 | 品类 | 金额 |
|---|---|---|
| 华东 | 饮料 | 10 |
| (空) | 零食 | 20 |
| (空) | 饮料 | 15 |
| 华北 | 零食 | 8 |
【执行提示词】
把地区明细的地区列,用下面最近非空往上填。
【处理后:地区明细(就地更新)】
| 地区 | 品类 | 金额 | 变更说明 |
|---|---|---|---|
| 华东 | 饮料 | 10 | 本来有值,不动 |
| 华北 | 零食 | 20 | 下面最近非空是「华北」 |
| 华北 | 饮料 | 15 | 下面最近非空是「华北」 |
| 华北 | 零食 | 8 | 本来有值,不动 |
逻辑详解:方向与场景 1 相反:空行寻找下方最近非空。行数不变,未点名列不动。
场景 3:从左往右把同行空格补上
业务背景:横向表同一行里,左侧已有姓名或部门,右侧岗位等格子为空。需要按行从左往右传播,而不是按键去另一张表取值。
【处理前:横向表】
| 姓名 | 部门 | 岗位 |
|---|---|---|
| 张三 | (空) | (空) |
| 李四 | 人事 | (空) |
【执行提示词】
把 “横向表” 从左往右把空的填上。
【处理后:横向表(就地更新)】
| 姓名 | 部门 | 岗位 | 变更说明 |
|---|---|---|---|
| 张三 | 张三 | 张三 | 空格依次吃到左侧最近非空「张三」 |
| 李四 | 人事 | 人事 | 岗位空,吃到左侧非空「人事」 |
逻辑详解:按行从左往右补空,不是按键从他表补。同一能力也支持向左传播。行数不变。若空则要用单价 × 数量算出来,请用「行操作」,不是本节点。
场景 4:常数填充(数量空的填成 0)
业务背景:数量列偶发空单元格,汇总时不能把空当成「没有这一行」。业务约定空数量按 0 参与合计;已经写成数字的行不得改动。
【处理前:数量表】
| 商品 | 数量 |
|---|---|
| 水杯 | 10 |
| 毛巾 | (空) |
| 杯子 | 5 |
【执行提示词】
把 “数量表” 数量列空的填成 0。
【处理后:数量表(就地更新)】
| 商品 | 数量 | 变更说明 |
|---|---|---|
| 水杯 | 10 | 本来有值,不动 |
| 毛巾 | 0 | 空单元格写成常数 0 |
| 杯子 | 5 | 本来有值,不动 |
逻辑详解:只填空,不把已有的 5 改成 0。要写入的字(含 null)按原样写入,不要理解成「填成空」。只有明确说填成空 / 空串,才写成空。把已有的 0 改成空,不是本节点。
场景 5:用该列平均值填空(统计量)
业务背景:数量缺测时,业务要求用该列已有数值的平均值补空,而不是填 0,以免把缺测和真实零销售混在一起。
【处理前:数量表】
| 商品 | 数量 |
|---|---|
| 水杯 | 10 |
| 毛巾 | (空) |
| 杯子 | 20 |
【执行提示词】
把数量表数量列空的,用该列平均值填上。
【处理后:数量表(就地更新)】
| 商品 | 数量 | 变更说明 |
|---|---|---|
| 水杯 | 10 | 参与均值计算,本身不动 |
| 毛巾 | 15 | (10 + 20) / 2 = 15,写入空格 |
| 杯子 | 20 | 参与均值计算,本身不动 |
逻辑详解:均值、中位数只填数值列。众数按出现最多的非空值。中位数、众数与均值同一机制,只是聚合量不同。可一次点名多列一起向下填。行数不变,不增列、不改列名。
五、 常见问题与操作贴士(FAQ)
Q1:为什么执行后没有新表,行数也没变?
答:这是默认机制。未写结果名时,本节点就地改源表,只改空单元格,行数不变。若需要保留未填充的底表,请在提示词里写出结果名。
Q2:NULL、空串、空白,以及已经写成 0 的格子,分别怎么处理?
答:空 = NULL、空串、空白,这三类都会被填。已经写成 0 的格子是非空值,不会被向下填充或均值覆盖。把已有的 0 改成空,不是本节点。
Q3:提示词里写了要填入「null」,会不会理解成填成空?
答:不会。要写入的字(含 null)按原样写入。只有明确说填成空 / 空串,才写成空。
Q4:按键从另一张表补列,或空则用公式算出来,该用谁?
答:按键从另一张表补列请用「匹配填充」。空则用同行其它列算出来(例如空则用单价 × 数量)请用「行操作」。本节点不增列、不改列名,也不按键跨表取值。
六、 关联算子导航
- 若需按键从另一张表把字段填回来:请参考 数据处理 · 匹配填充
- 若需空则用同行其它列计算写入:请参考 数据处理 · 行操作
- 欲下载真实数据表格亲自动手实测:请查阅 数据案例 · 缺失填充案例