如何基于日期从一行数据框中创建具有两行的数据框

时间:2019-10-17 17:08:14

标签: pyspark pyspark-dataframes

我有一个数据框,其中有一行和2个日期字段,分别是createddate和enddate

如何基于这两个日期字段获取具有两行的新数据框

我已经有一个看起来像

的数据框
+--------------------+----------------+--------------------+-------------------+-------------------+
|      organizationid| id                 |        createddate|              trialenddate|
+--------------------+----------------+--------------------+-------------------+-------------------+
|abcdsdfdlsjdlfkdjfld|abcdsdfdlsjdlfkdjfld|      2017-09-15 13:58:11|     2017-11-30 00:00:00
+--------------------+----------------+--------------------+-------------------+-------------------+

我希望输出数据框由

组成
organizationid            startdate      enddate
abcdsdfdlsjdlfkdjfld      2017-09-15     null
abcdsdfdlsjdlfkdjfld      2017-12-01     null

基本上,我的第一行应该来自createddate列,第二行应该来自结束日期的下一个日期。我也想填充enddate列,即使它具有空值。

1 个答案:

答案 0 :(得分:1)

您可以使用:

第一行从startdatecreateddate中组成一个数组列enddate。第二行将startdate列表分解为多行。

import pyspark.sql.functions as F

df = df.withColumn("startdate", F.array(F.col("createddate"), F.col("trialenddate")))
df = df.withColumn("startdate", F.explode(F.col("startdate"))).drop("createddate", "enddate")