Python 将Pyspark DF列中的日期YYYY-mm-dd更改为YYYY-mm-01

Python 将Pyspark DF列中的日期YYYY-mm-dd更改为YYYY-mm-01,python,dataframe,date,pyspark,Python,Dataframe,Date,Pyspark,我有一个如下所示的数据帧: +------+----------+----+ |ID | date |flag| +------+----------+----+ |123456|2015-04-21|null| |234567|2017-04-18|null| |345678|2009-06-25|null| |456789|2001-11-07|null| |567890|2016-10-02|null| +------+----------+----+ 我试图修改数据框,以

我有一个如下所示的数据帧:

+------+----------+----+
|ID    |  date    |flag|
+------+----------+----+
|123456|2015-04-21|null|
|234567|2017-04-18|null|
|345678|2009-06-25|null|
|456789|2001-11-07|null|
|567890|2016-10-02|null|
+------+----------+----+
我试图修改数据框,以更改日期列中的日期,使其显示为“YYYY-mm-01”,如下所示

+------+----------+----+
|ID    |  date    |flag|
+------+----------+----+
|123456|2015-04-01|null|
|234567|2017-04-01|null|
|345678|2009-06-01|null|
|456789|2001-11-01|null|
|567890|2016-10-01|null|
+------+----------+----+
我正试图这样做:

df = df.withColumn("date", f.trunc("date", "month"))

但它看起来好像把日期弄乱了,让所有的日期都是同一个日期。如何将每行的pyspark列元素从原来的YYYY-mm-dd更改为YYYY-mm-01?

您可以使用datetime.replace。例如,假设您有一个日期df[0]['date']

date = datetime.strptime('df[0]['date']', '%y-%m-%d')
newdate = date.replace(day=1)

date
列的数据类型是什么?它是一根绳子吗?(尝试
df.printSchema()
)看起来像字符串。确定后,首先转换为
DateType
。然后你所尝试的应该会奏效。非常感谢你的澄清!