【问题标题】:How to create a new column based on values of two columns in Spark如何根据 Spark 中两列的值创建新列
【发布时间】:2020-08-13 21:13:44
【问题描述】:

所以,我想在我的数据框中创建一个新列,其行取决于两列中的值,并且还涉及一个条件。

我试过了,但它不起作用。

some_value = ...
df = df.withColumn("new_col", col("col1") if col("col2") == some_value else None)

这样做的正确方法是什么?

【问题讨论】:

标签: python dataframe apache-spark pyspark apache-spark-sql


【解决方案1】:

一个使用expr的简单例子,也可以使用when

val df3 = df2.withColumn("new_col", expr("case when c1 = 1 and c2 = 101 then c1 + c2 else 999 end"))

【讨论】:

    【解决方案2】:

    这对我有用,

     new_col_expr = when(col("col2").eqNullSafe(some_value), col("col1")).otherwise(None)
     df = df.withColumn("new_col", new_col_expr)
    

    【讨论】:

      【解决方案3】:

      你可以使用when函数。

      newval='10002'
      df2 = df.withColumn("new_col", when((col("col1") == lit(newval)), "col1").otherwise(None))
      df2.show()
      

      【讨论】:

      • 我需要导入什么才能使用 lit?
      • 不确定是否导入,可以使用import org.apache.spark.sql.functions._使用lit
      猜你喜欢
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 2023-04-05
      • 2021-11-23
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      相关资源
      最近更新 更多