【发布时间】:2019-12-07 09:06:43
【问题描述】:
我有一个包含三列的 PySpark 数据框。前两列有数组作为它们的元素,而最后一列给出了最后一列的数组长度。以下是 PySpark 数据框:
+---------------------+---------------------+-----+
| c1| c2|lenc2|
+---------------------+---------------------+-----+
|[2017-02-14 00:00:00]|[2017-02-24 00:00:00]| 1|
|[2017-01-16 00:00:00]| []| 0|
+---------------------+---------------------+-----+
数组包含时间戳数据类型。 lenc2 列表示c1 列中数组的长度。对于lenc2==0 的所有行,c1 列只有一个(时间戳)元素。
对于lenc2==0 的所有行,我想从c1 列中的数组中获取时间戳,将其添加5 天并将其放入c2 行中的数组中。我该怎么做?
这是预期输出的示例:
+---------------------+---------------------+-----+
| c1| c2|lenc2|
+---------------------+---------------------+-----+
|[2017-02-14 00:00:00]|[2017-02-24 00:00:00]| 1|
|[2017-01-16 00:00:00]|[2017-01-21 00:00:00]| 0|
+---------------------+---------------------+-----+
以下是我到目前为止所尝试的:
df2 = df1.withColumn(
"c2",
F.when(F.col("lenc2") == 0, F.array_union(F.col("c1"), F.col("c2"))).otherwise(
F.col("c2")
),
)
【问题讨论】:
标签: python pyspark pyspark-sql pyspark-dataframes