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

如何从列名为UUID的PySpark DataFrame提取每行唯一非空值到新列

解决方案

针对你遇到的PySpark DataFrame列名为UUID、每行仅一个非空值的场景,有两种简洁的方法可以提取唯一非空值到新列:

方法一:使用coalesce函数

coalesce会返回传入参数中的第一个非空值,正好适配你每行仅一个非空值的情况,而且可以通过df.columns动态获取所有列,无需硬编码UUID列名:

from pyspark.sql.functions import coalesce, col

# 动态生成所有列的col对象列表
all_columns = [col(col_name) for col_name in df.columns]
# 添加新列,提取唯一非空值
df = df.withColumn("new_column", coalesce(*all_columns))

方法二:使用array+filter+element_at组合

如果想更直观地过滤空值后提取,可以先把所有列转为数组,过滤掉null元素,再取数组的第一个元素:

from pyspark.sql.functions import array, filter, element_at

df = df.withColumn(
    "new_column",
    element_at(
        filter(array(*[col(col_name) for col_name in df.columns]), lambda x: x.isNotNull()),
        1
    )
)

两种方法都不需要依赖具体的列名,完全适配UUID生成的动态列名场景,且因为每行仅一个非空值,最终结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:33:16