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
。然后你所尝试的应该会奏效。非常感谢你的澄清!