【问题标题】:How to fill up null values in Spark Dataframe based on other columns' value?如何根据其他列的值填充 Spark Dataframe 中的空值?
【发布时间】:2022-11-16 06:02:22
【问题描述】:

鉴于此数据框:

+-----+-----+----+
|num_a|num_b| sum|
+-----+-----+----+
|    1|    1|   2|
|   12|   15|  27|
|   56|   11|null|
|   79|    3|  82|
|  111|  114| 225|
+-----+-----+----+

如果可以从其他列收集值,您将如何在 sum 列中填充 Null 值?在此示例中,值将是 56+11。

我已经用 udf 尝试过df.fillna,但这似乎不起作用,因为它只是获取列名而不是实际值。我只想计算具有缺失值的行的值,因此创建一个新列不是一个可行的选择。

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    您可以使用合并功能。检查此示例代码

    import pyspark.sql.functions as f
    
    df = spark.createDataFrame(
       [(1, 2, 3),
       (12, 15, 27),
       (56, 11, None),
       (79, 3, 82)],
       ["num_a", "num_b", "sum"]
    )
    
    df.withColumn("sum", f.coalesce(f.col("sum"), f.col("num_a") + f.col("num_b"))).show()
    

    输出是:

    +-----+-----+---+
    |num_a|num_b|sum|
    +-----+-----+---+
    |    1|    2|  3|
    |   12|   15| 27|
    |   56|   11| 67|
    |   79|    3| 82|
    +-----+-----+---+
    

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2021-06-19
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      相关资源
      最近更新 更多