1
我有一個數據幀有一列A被定義爲字符串列類型,但列中的數據實際上是日期。例如,列A爲「20170506」,我想將列A轉換爲日期類型。第一,我使用了下面的方法:在DataFrames中將字符串類型從字符串更改爲日期的最佳方式是什麼?
df = df1.withColumn('A', df['A'].cast(DateType())
其結果是,A列的所有項轉換爲null。我查了一下spark API的官方文檔,發現列A的格式應該是'yyyy-MM-dd',就像「2017-05-06」一樣。
所以,我用了另一種方式:
# 1. use udf function
func = udf (lambda x: datetime.strptime(x, '%Y-%m-%d'), DateType())
df = df1.withColumn('A', func(col('A')))
# 2. use to_date function
df.select(to_date(from_unixtime(unix_timestamp(df['A'], 'yyyy-MM-dd'))).alias('A'))
我不認爲無論哪種方式是一個好主意,因爲它的每一個複雜的,而不是短暫的。
爲什麼to_date(col)
不能設置列字符串的格式,就像這樣:to_date(col, 'yyyy-MM-dd')
,我認爲這是對我們非常重要(順便說一下,蜂房SQL無法設定呢!)。
而且,什麼是在DataFrames中將字符串類型從字符串更改爲日期的最佳方法是什麼?謝謝:)