簡體   English   中英

如何將DataFrame中的字符串轉換為pyspark中的日期

[英]How to convert string in DataFrame to date in pyspark

我想將 DataFrame 列中的字符串轉換為 pyspark 中的日期。

l = [("10/14/2000","12/4/1991","5/8/1991"), ("11/3/1391","1/26/1992","9/5/1992")]
spark.createDataFrame(l).collect()
df = spark.createDataFrame(l, ["first", 'second',"third"])

df2 = df.select(col("first"),to_date(col("first"),"MM/dd/yyyy").alias("date"))
df3 = df.select(col("first"),to_date(col("first"),"%M/%d/%y").alias("date"))

我嘗試了上面的那些代碼,但它們都不起作用。

有人可以幫我解決這個問題嗎?

您使用的代碼片段是正確的,但是您用於解析的date_format不符合Spark 3.x

此外,要處理不一致的情況,例如 - 10/14/2000 和 11/3/1391,使用MM/dd/yyyy ,您可以設置timeParserPolicy=LEGACY ,因為以下鏈接適用於Spark 3.x ,更多信息可以在這里找到

可以找到用於解析的可用日期時間模式 - https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html

數據准備

l = [("10/14/2000","12/4/1991","5/8/1991"), ("11/3/1391","1/26/1992","9/5/1992")]

df = sql.createDataFrame(l, ["first", 'second',"third"])

df.show()

+----------+---------+--------+
|     first|   second|   third|
+----------+---------+--------+
|10/14/2000|12/4/1991|5/8/1991|
| 11/3/1391|1/26/1992|9/5/1992|
+----------+---------+--------+

迄今為止

df.select(F.col("first"),F.to_date(F.col("first"),"MM/dd/yyyy").alias("date")).show()

+----------+----------+
|     first|      date|
+----------+----------+
|10/14/2000|2000-10-14|
| 11/3/1391|1391-11-03|
+----------+----------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM