Pyspark 处理编号用逗号转为十进制
Pyspark handling number with comma to decimal
我有以下列需要转换成小数。当前 ent_Rentabiliteit_ent_rentabiliteit
列是一个字符串,我需要转换为具有 returns 相同值的数据类型。所以在转换后必须显示 -0.7
或 -1.2
等值。
我当前的代码目前看起来像:
from pyspark.sql import functions as F
df2test = df2.withColumn(
"ent_Rentabiliteit_ent_rentabiliteit ",
F.regexp_replace("ent_Rentabiliteit_ent_rentabiliteit ", ".", ".").cast(
DecimalType()
),
)
有什么建议吗?非常感谢
您可以 cast
到 DecimalType
的列。
示例:
spark = SparkSession.builder.getOrCreate()
data = [
{
"ent_Rentabiliteit_ent_rentabiliteit": "1.23",
},
{
"ent_Rentabiliteit_ent_rentabiliteit": "-2.33",
},
]
df = spark.createDataFrame(data)
df = df.withColumn(
"new_col", F.col("ent_Rentabiliteit_ent_rentabiliteit").cast(DecimalType(10, 4))
)
结果:
+-----------------------------------+-------+
|ent_Rentabiliteit_ent_rentabiliteit|new_col|
+-----------------------------------+-------+
| 1.23| 1.2300|
| -2.33|-2.3300|
+-----------------------------------+-------+
架构:
root
|-- ent_Rentabiliteit_ent_rentabiliteit: string (nullable = true)
|-- new_col: decimal(10,4) (nullable = true)
请记住 DecimalType
必须有固定的精度。创建 DecimalType 时,默认精度和小数位数为 (10, 0)。从 decimal.Decimal 对象推断模式时,它将是 DecimalType(38, 18).
请在此处详细了解精度:DecimalType
我有以下列需要转换成小数。当前 ent_Rentabiliteit_ent_rentabiliteit
列是一个字符串,我需要转换为具有 returns 相同值的数据类型。所以在转换后必须显示 -0.7
或 -1.2
等值。
我当前的代码目前看起来像:
from pyspark.sql import functions as F
df2test = df2.withColumn(
"ent_Rentabiliteit_ent_rentabiliteit ",
F.regexp_replace("ent_Rentabiliteit_ent_rentabiliteit ", ".", ".").cast(
DecimalType()
),
)
有什么建议吗?非常感谢
您可以 cast
到 DecimalType
的列。
示例:
spark = SparkSession.builder.getOrCreate()
data = [
{
"ent_Rentabiliteit_ent_rentabiliteit": "1.23",
},
{
"ent_Rentabiliteit_ent_rentabiliteit": "-2.33",
},
]
df = spark.createDataFrame(data)
df = df.withColumn(
"new_col", F.col("ent_Rentabiliteit_ent_rentabiliteit").cast(DecimalType(10, 4))
)
结果:
+-----------------------------------+-------+
|ent_Rentabiliteit_ent_rentabiliteit|new_col|
+-----------------------------------+-------+
| 1.23| 1.2300|
| -2.33|-2.3300|
+-----------------------------------+-------+
架构:
root
|-- ent_Rentabiliteit_ent_rentabiliteit: string (nullable = true)
|-- new_col: decimal(10,4) (nullable = true)
请记住 DecimalType
必须有固定的精度。创建 DecimalType 时,默认精度和小数位数为 (10, 0)。从 decimal.Decimal 对象推断模式时,它将是 DecimalType(38, 18).
请在此处详细了解精度:DecimalType