Pyspark 如何基于日期从一行数据框创建包含两行的数据框

Pyspark 如何基于日期从一行数据框创建包含两行的数据框,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我有一个数据框,其中有一行和两个日期字段createddate和enddate 如何基于这两个日期字段获得包含两行的新数据框 我已经有了一个看起来像 +--------------------+----------------+--------------------+-------------------+-------------------+ | organizationid| id | createddate|

我有一个数据框,其中有一行和两个日期字段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列,即使它有空值。

您可以使用:

第一行由
createddate
enddate
组成数组列
startdate
。第二行将
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")

TypeError:uz()接受1个位置参数,但2个位置参数无效given@Austin显示更多的代码,这不应该发生,我删除了
drop()
调用,现在尝试告诉我第一行本身给出了错误。df=df.withColumn(“startdate”,F.array(F.col(“createddate”,“trialenddate”))@Austin抱歉,我修好了<代码>输入错误:p创建
结束日期
数组,与我们在
开始日期