pyspark 修改python版本_python – Pyspark从日期到字符串更改列的类型
我有以下數據幀:
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()
標簽:python,apache-spark,pyspark,apache-spark-sql
來源: https://codeday.me/bug/20191001/1837960.html
總結
以上是生活随笔為你收集整理的pyspark 修改python版本_python – Pyspark从日期到字符串更改列的类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交通银行买单吧跨行还信用卡相关问题分析
- 下一篇: 蚂蚁集团要重启上市了?官方正式回应:目前