Pyspark 如何基于日期从一行数据框创建包含两行的数据框
我有一个数据框,其中有一行和两个日期字段createddate和enddate 如何基于这两个日期字段获得包含两行的新数据框 我已经有了一个看起来像Pyspark 如何基于日期从一行数据框创建包含两行的数据框,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我有一个数据框,其中有一行和两个日期字段createddate和enddate 如何基于这两个日期字段获得包含两行的新数据框 我已经有了一个看起来像 +--------------------+----------------+--------------------+-------------------+-------------------+ | organizationid| id | createddate|
+--------------------+----------------+--------------------+-------------------+-------------------+
| 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创建结束日期
数组,与我们在开始日期