我有一个数据框,其中有一行和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列,即使它具有空值。
答案 0 :(得分:1)
您可以使用:
第一行从startdate
和createddate
中组成一个数组列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")