我有一個像'06/21/2021 9:27 AM'的日期字串,我想在pyspark中把它轉換成時間戳型別。
我已經嘗試了這種方法,還有其他的方法,但似乎總是回傳null.
df = df.select(
from_unixtime(unix_timestamp('date_string', 'MM/dd/yyy hh:mm:ss a')).cast(TimestampType()
)
有沒有人成功地將這種字串格式轉換為時間戳格式?
uj5u.com熱心網友回復:
06/21/2021 9:27 AM不包含分鐘的秒值,所以你應該洗掉決議器格式中的:ss,請看這個例子:
spark.sql("select from_unixtime(unix_timestamp('06/21/2021 9:27 AM', 'MM/dd/yyyy hh:mm a') ts"/span>).show()
-------------------
| ts|
-------------------
|2021-06-21 09:27:00|
-------------------
uj5u.com熱心網友回復:
一種選擇是使用帶有withColumn和to_timestamp函式的DataFrame APIs,但是在這之前我們需要將timeParserPolicy設定為LEGACY
import pyspark.sql.function as F
spark.sql("set spark.sql.legacy.timeParserPolicy=LEGACY"/span>)
df.withColumn('ts', F.to_timestamp('date_string', format='MM/dd/yyyy hh:mm a')
舉例說明
df = spark.createDataFrame([
('06/21/2021 9:27 AM', ) 。
('06/11/2021 9:02 PM', ),
('01/28/2021 12:56 AM', )
], ('date_string', ))
df = df.withColumn('ts', F.to_timestamp('date_string', format='MM/dd/yyy hh:mm a')
df.show()
------------------- -------------------
|date_string| ts|
------------------- -------------------
| 06/21/2021 9: 27 AM|2021-21 09:27:00|
|06/11/2021 9: 02 PM|2021-06-11 21:02:00|
|01/28/2021 12: 56AM|2021-28 00:56: 00|
------------------- -------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328343.html
標籤:
