我正在閱讀有一些日期列的JSON檔案。問題是有些日期列包含阿拉伯文/烏爾都文的日期。
??-??-????
我想把它轉換為yyyy-mm-dd格式的英文日期。
如何在Pyspark中實作這一點?
uj5u.com熱心網友回復:
你可以通過將型別轉換為小數,將阿拉伯數字轉換為英文。
df = spark.createDataFrame([('??-??-???',)], ['arabic'/span>] )
df.withColumn('split', split('arabic', '-')
.withColumn('date', concat_ws('-', col('split')[2] 。 cast('decimal'), col('split')[0] 。 cast('十進制'), col('split')[1].cast('十進制')
.drop('split') .show()
---------- ---------
| 阿拉伯語|日期|
---------- ---------
|??-??-??|2021-4-25|
---------- ---------
uj5u.com熱心網友回復:
最后,我決定使用pandas_udf和python的unidecode庫
。from pyspark.sql.type import StringType
from pyspark.sql.function import pandas_udf
from unidecode import unidecode
import pandas as pd
def unidecode_(val)。
if val:
return unidecode(val)
@pandas_udf(StringType()/span>)
def a_to_n(col)。
return pd.Series(col.apply(unidecode_))
df = df_json.withColumn('checkin_date', a_to_n(F.col("checkin_date") ))
它給了我想要的答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310752.html
標籤:
