[英]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.