Pyspark:如何根据另一列的值填充空值

Posted

技术标签:

【中文标题】Pyspark:如何根据另一列的值填充空值【英文标题】:Pyspark: How to fill null values based on value on another column 【发布时间】:2021-12-17 15:33:31 【问题描述】:

我想根据 id 列的值在 Spark df 上填充空值。

Pyspark df:

index id animal name
1 001 cat doug
2 002 dog null
3 001 cat null
4 003 null null
5 001 null doug
6 002 null bob
7 003 bird larry

预期结果:

index id animal name
1 001 cat doug
2 002 dog bob
3 001 cat doug
4 003 bird larry
5 001 cat doug
6 002 dog bob
7 003 bird larry

【问题讨论】:

【参考方案1】:

您可以将last(或first)与窗口函数一起使用。

from pyspark.sql import Window
from pyspark.sql import functions as F

w = Window.partitionBy('id')
df = (df.withColumn('animal', F.last('animal', ignorenulls=True).over(w))
      .withColumn('name', F.last('name', ignorenulls=True).over(w)))
      

【讨论】:

以上是关于Pyspark:如何根据另一列的值填充空值的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark:如果具有特定 id 的任何行包含 null,如何根据另一列派生新列的值?

Pyspark数据帧:根据另一列的值提取列

PySpark - 将另一列的值作为 spark 函数的参数传递

如何在 PySpark 中用该列的第一个非空值填充该列的空值

如何获得DataGridView中某一列中全部的值?

根据另一列的元素从 pyspark 数组中删除元素