【问题标题】:Spark: Conditionally replace col1 value with col2 [duplicate]Spark:有条件地将 col1 值替换为 col2 [重复]
【发布时间】:2018-10-31 02:16:23
【问题描述】:

我有一个已加入旧数据和更新数据的数据框:

我想折叠此数据,以便当 model_update 列中的非空值可用时,它会替换同一行中的模型列值。如何做到这一点?

数据框:

+----------------------------------------+-------+--------+-----------+------------+
|id                                      |make   |model   |make_update|model_update|
+----------------------------------------+-------+--------+-----------+------------+
|1234                                    |Apple  |iphone  |null       |iphone x    |
|4567                                    |Apple  |iphone  |null       |iphone 8    |
|7890                                    |Apple  |iphone  |null       |null        |
+----------------------------------------+-------+--------+-----------+------------+

理想结果:

+----------------------------------------+-------+---------+
|id                                      |make   |model    |
+----------------------------------------+-------+---------|
|1234                                    |Apple  |iphone x |
|4567                                    |Apple  |iphone 8 |
|7890                                    |Apple  |iphone   |
+----------------------------------------+-------+---------+

【问题讨论】:

    标签: scala apache-spark conditional pyspark-sql


    【解决方案1】:

    使用合并。

    df=df.withColumn("model",coalesce(col("model_update"),col("model")))

    【讨论】:

      【解决方案2】:

      这是一个快速的解决方案:

      val df2 = df1.withColumn("New_Model", when($"model_update".isNull ,Model)
                                        .otherwise(model_update))
      

      其中 df1 是您的原始数据框。

      【讨论】:

        猜你喜欢
        • 2020-04-21
        • 1970-01-01
        • 2016-12-16
        • 2016-08-12
        • 1970-01-01
        • 1970-01-01
        • 2018-06-30
        • 1970-01-01
        • 2019-05-22
        相关资源
        最近更新 更多