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

如何按分组条件上下填充列,可使用PowerQuery、pandas或SQL实现

同instance分组下string_values空值填充方案

以下分别提供pandas、PowerQuery、SQL三种实现方式:

pandas 实现

核心用groupby结合填充函数处理,示例代码如下:

import pandas as pd

# 向下填充:取同组内当前行上方最近的非空值填充
df['string_values'] = df.groupby('instance')['string_values'].ffill()

# 向上填充:取同组内当前行下方最近的非空值填充
df['string_values'] = df.groupby('instance')['string_values'].bfill()

# 组合使用:先下后上填充,覆盖同组存在至少一个非空值的所有场景
df['string_values'] = df.groupby('instance')['string_values'].ffill().bfill()

如果需要先按指定列(比如行号、时间列)排序再填充,可调整为:

df['string_values'] = df.groupby('instance', group_keys=False).apply(
    lambda x: x.sort_values('排序字段名')['string_values'].ffill()
)

PowerQuery 实现

操作步骤如下:

  • 将数据导入PowerQuery编辑器
  • 选中instance列,点击「转换」选项卡下的「分组依据」
  • 分组操作选择「所有行」,新列名可命名为grouped_data
  • 新增自定义列,根据填充需求输入对应公式:
    • 向下填充:= Table.FillDown([grouped_data], {"string_values"})
    • 向上填充:= Table.FillUp([grouped_data], {"string_values"})
  • 展开自定义列的表结构,删除多余的辅助列即可得到结果

SQL 实现

支持窗口函数的数据库(MySQL8.0+、PostgreSQL、SQL Server、Hive等)可直接用以下语句,假设表名为your_table,存在可用于排序的字段row_id:

-- 向下填充
SELECT 
    instance,
    row_id,
    FIRST_VALUE(string_values) OVER(
        PARTITION BY instance 
        ORDER BY row_id 
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS string_values
FROM your_table;

-- 向上填充
SELECT 
    instance,
    row_id,
    FIRST_VALUE(string_values) OVER(
        PARTITION BY instance 
        ORDER BY row_id DESC
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS string_values
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:24:03