[英]Pyspark changing type of column from date to string
我有以下數據框:
corr_temp_df
[('vacationdate', 'date'),
('valueE', 'string'),
('valueD', 'string'),
('valueC', 'string'),
('valueB', 'string'),
('valueA', 'string')]
現在,我想將Vacationdate列的數據類型更改為String,以便數據框也采用此新類型並覆蓋所有條目的數據類型數據。 例如寫后:
corr_temp_df.dtypes
Vacationdate的數據類型應被覆蓋。
我已經使用過諸如cast,StringType或astype之類的函數,但是我沒有成功。 你知道怎么做嗎?
讓我們創建一些虛擬數據:
import datetime
from pyspark.sql import Row
from pyspark.sql.functions import col
row = Row("vacationdate")
df = sc.parallelize([
row(datetime.date(2015, 10, 07)),
row(datetime.date(1971, 01, 01))
]).toDF()
如果Spark> = 1.5.0,則可以使用date_format
函數:
from pyspark.sql.functions import date_format
(df
.select(date_format(col("vacationdate"), "dd-MM-YYYY")
.alias("date_string"))
.show())
在Spark <1.5.0中,可以使用Hive UDF完成:
df.registerTempTable("df")
sqlContext.sql(
"SELECT date_format(vacationdate, 'dd-MM-YYYY') AS date_string FROM df")
當然,在Spark> = 1.5.0中仍然可用。
如果不使用HiveContext
,則可以使用UDF模仿date_format
:
from pyspark.sql.functions import udf, lit
my_date_format = udf(lambda d, fmt: d.strftime(fmt))
df.select(
my_date_format(col("vacationdate"), lit("%d-%m-%Y")).alias("date_string")
).show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.