如何在pyspark中将月份名称更改为不同的语言 - 数据框

Posted

技术标签:

【中文标题】如何在pyspark中将月份名称更改为不同的语言 - 数据框【英文标题】:how to change month name to a different language in pyspark - dataframe 【发布时间】:2021-04-23 16:57:38 【问题描述】:

我正在尝试使用以下配置在 Databricks 上为“日期”创建一个表:

# Get date range
dateFrom = dbutils.widgets.get("date_from")
dateTo = dbutils.widgets.get("date_to")

dateDF_TESTE = spark.sql("SELECT sequence(to_date('0'), to_date('1'), interval 1 day) AS date".format(dateFrom, dateTo))\
               .select(F.explode("date").alias('DSC_DATE'))'''

但是当我添加包含这些数据的列时,我只能获取英文信息,例如月份名称或星期几。

我打算将此信息更改为另一种语言(葡萄牙语),但没有成功。我尝试使用语言环境,但它不起作用。

import locale
# use user's default settings
locale.setlocale(locale.LC_ALL, 'pt_PT.utf8')

【问题讨论】:

【参考方案1】:

从 Spark 3.0 开始,可以在单个列上使用 to_csv()。 to_csv 接受与标准 csv 写入器相同的参数,因此可以在此处设置语言环境:

from pyspark.sql import functions as F

dateDF_TESTE.withColumn("formatted_date",
    F.to_csv(F.struct(F.col("DSC_DATE")),
        "dateFormat": "EEEE, d 'de' MMMM 'de' yyyy", "locale": "pt", "quote":""))\
    .show(truncate=False, n=5)

打印

+----------+------------------------------------+
|DSC_DATE  |formatted_date                      |
+----------+------------------------------------+
|2020-01-01|Quarta-feira, 1 de Janeiro de 2020|
|2020-01-02|Quinta-feira, 2 de Janeiro de 2020|
|2020-01-03|Sexta-feira, 3 de Janeiro de 2020 |
|2020-01-04|Sábado, 4 de Janeiro de 2020      |
|2020-01-05|Domingo, 5 de Janeiro de 2020     |
+----------+------------------------------------+
only showing top 5 rows

【讨论】:

以上是关于如何在pyspark中将月份名称更改为不同的语言 - 数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pyspark 中将字符串更改为时间戳?

jQuery UI datepicker:如何将下拉列表中的月份名称从短名称更改为长名称?

在pyspark中将值随机更改为空值的最有效方法是啥?

在 Pyspark 中将列类型从字符串更改为日期

在 Pyspark 中将字符串更改为时间戳

在 hive 或 pyspark 中将双数组字段更改为单个数组