【发布时间】:2017-11-23 20:29:49
【问题描述】:
我想知道是否有办法同时更改 PySpark Dataframe 的两列(或更多列)。现在我正在使用withColumn,但我不知道这是否意味着条件会被检查两次(这对于大型数据框来说太贵了)。此代码基本上检查其他两列(同一行)中的值,并基于此将两列更改为 None/null。
condition = is_special_id_udf(col("id"))) & should_hide_response_udf(col("response_created"))
new_df = df.withColumn(
"response_text",
when(condition, None)
.otherwise(col("response_text"))
)
new_df = df.withColumn(
"response_created",
when(condition, None)
.otherwise(col("response_created"))
)
【问题讨论】:
-
请分享完整的代码和示例数据。您的代码不可重现。
-
您真的需要这些数据吗?代码按预期工作我只是想知道是否有更好的方法来做同样的事情。
-
您要创建同一列两次,您的问题是如何做到这一点?
-
那是源代码中的一个类型。我纠正了它。我根据相同的条件修改了两个不同的列。现在我一个接一个地这样做。我想知道是否有更好的方法使用 DF API 或 RDD。谢谢。
-
您是在谈论将列添加到同一个数据帧还是两个不同的数据帧(您的代码在获取原始数据帧时只会有一个新列)。此外,您正在使用需要 response_created 的条件,您的目标是覆盖它吗?
标签: python apache-spark pyspark