使用pySpark将值打印为德文千位分隔符以及十进制值

使用pySpark将值打印为德文千位分隔符以及十进制值,pyspark,pyspark-sql,pyspark-dataframes,Pyspark,Pyspark Sql,Pyspark Dataframes,我需要将字符串类型的dataframe列转换为double,并添加格式掩码,如千位分隔符和小数点 输入数据帧: column(StringType) 2655.00 15722.50 235354.66 所需格式: (-1) * to_number(df.column, format mask) 数据以千位分隔符和,十进制分隔符和2个十进制数字的形式传递 输出列: 2.655,00 15.722,50 235.354,66 您可以简单地执行以下操作: import pyspark.sql.

我需要将字符串类型的dataframe列转换为double,并添加格式掩码,如千位分隔符和小数点

输入数据帧:

column(StringType)
2655.00
15722.50
235354.66
所需格式:

(-1) * to_number(df.column, format mask)
数据以
千位分隔符和
十进制分隔符和2个十进制数字的形式传递

输出列:

2.655,00
15.722,50
235.354,66
您可以简单地执行以下操作:

import pyspark.sql.functions as F

# create a new colum with formatted date
df = df.withColumn('num_format', F.format_number('col', 2))

# switch the dot and comma
df = df.withColumn('num_format', F.regexp_replace(F.regexp_replace(F.regexp_replace('num_format', '\\.', '@'), ',', '\\.'), '@', ','))
df.show()

+---------+----------+
|      col|num_format|
+---------+----------+
|   2655.0|  2.655,00|
|  15722.5| 15.722,50|
|235354.66|235.354,66|
+---------+----------+

Spark
date_format
返回的字符串编号格式为
替换
,以获得所需的欧洲格式

首先,用点替换点,然后用点替换逗号,最后用点替换点

df.withColumn("european_format", regexp_replace(regexp_replace(regexp_replace(
            format_number(col("column").cast("double"), 2), '\\.', '#'), ',', '\\.'), '#', ',')
          ).show()
给出:

+---------+---------------+
|   column|european_format|
+---------+---------------+
|  2655.00|       2.655,00|
| 15722.50|      15.722,50|
|235354.66|     235.354,66|
+---------+---------------+

谢谢……太好了:)