【问题标题】:Update column with a where clause in Pyspark在 Pyspark 中使用 where 子句更新列
【发布时间】:2017-06-29 18:17:20
【问题描述】:

如何使用 where 子句更新 Pyspark 数据框中的列?

这类似于这个 SQL 操作:

   UPDATE table1 SET alpha1= x WHERE alpha2< 6;

其中 alpha1 和 alpha2 是 table1 的列。

例如: 我有一个数据框 table1,其值如下:

表格1 阿尔法1阿尔法2 3 7 4 5 5 4 6 8 更新后的数据框Table1: 阿尔法1阿尔法2 3 7 × 5 × 4 6 8

如何在 pyspark 数据框中执行此操作?

【问题讨论】:

    标签: apache-spark dataframe pyspark pyspark-sql


    【解决方案1】:

    您正在寻找when 函数:

    df = spark.createDataFrame([("3",7),("4",5),("5",4),("6",8)],["alpha1", "alpha2"])
    df.show()
    >>> +------+------+
    >>> |alpha1|alpha2|
    >>> +------+------+
    >>> |     3|     7|
    >>> |     4|     5|
    >>> |     5|     4|
    >>> |     6|     8|
    >>> +------+------+
    
    df2 = df.withColumn("alpha1", pyspark.sql.functions.when(df["alpha2"] < 6, "x").otherwise(df["alpha1"]))
    df2.show()
    >>>+------+------+
    >>>|alpha1|alpha2|
    >>>+------+------+
    >>>|     3|     7|
    >>>|     x|     5|
    >>>|     x|     4|
    >>>|     6|     8|
    >>>+------+------+
    

    【讨论】:

    • 这会覆盖现有的列吗?
    • 它将创建一个新的数据框,其中列已更新。如果您想要一个新列,只需使用不同的名称
    猜你喜欢
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多