将带美元符号的字符串转换为数字

Convert string with dollar sign into numbers

我有一个带有美元符号的字符串列。如何转换为双精度型或浮点型以便对其进行计算?

这些列看起来像“$1000,000.28”。

谢谢。

您可以使用 string.replace 删除 $ 符号,然后只需使用 float() 即可将字符串转换为浮点数。

money = ',345'
money = money.replace('$','') .replace(',','') #this replaces the $ and , in the string
money = float(money)

使用 regexp_replace 函数并转换为双倍。

import pyspark.sql.functions as f

df2 = df.withColumn('new_value', f.regexp_replace('value', '[$,]', '').cast('double'))
df2.printSchema()
df2.show(10, False)

root
 |-- id: string (nullable = true)
 |-- value: string (nullable = true)
 |-- new_value: double (nullable = true)

+---+------------+----------+
|id |value       |new_value |
+---+------------+----------+
|1  |00,000.28|1000000.28|
+---+------------+----------+