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

Pyspark如何通过匹配column_1相同值填补column_2的NA空值

需求说明

当Column_2为空时,检索与该行Column_1值相同的首个非空Column_2值进行填充,且同一个Column_1取值仅对应唯一的Column_2取值。

示例输入

column_1 column_2
    52     A
    78     B
    52 

预期输出

column_1 column_2
    52     A
    78     B
    52     A
Pyspark实现方案

你可以用窗口函数搭配first()函数实现,first()的第二个参数设置为True即可跳过空值取分区内首个非空值,实现代码如下:

# 导入依赖
from pyspark.sql import SparkSession
from pyspark.sql import Window
from pyspark.sql.functions import first, col

# 初始化SparkSession
spark = SparkSession.builder.appName("fill_null_value").getOrCreate()

# 构造示例数据
data = [(52, "A"), (78, "B"), (52, None)]
df = spark.createDataFrame(data, schema=["column_1", "column_2"])

# 定义窗口:按column_1分区
w = Window.partitionBy("column_1")

# 填充空值
df_filled = df.withColumn("column_2", first(col("column_2"), ignorenulls=True).over(w))

# 查看结果
df_filled.show()

如果你的数据有明确的时间/顺序字段来定义「首个」的判定规则,只需要在窗口定义中添加orderBy规则即可,比如按行号升序取第一个非空值:

w = Window.partitionBy("column_1").orderBy("row_id")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:54:03