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

Posted

技术标签:

【中文标题】将带有美元符号的字符串转换为数字【英文标题】:Convert string with dollar sign into numbers 【发布时间】:2020-08-12 13:53:45 【问题描述】:

我有一个带有美元符号的字符串列。如何转换为 doubletype 或 float 以便进行计算?

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

谢谢。

【问题讨论】:

你可以使用正则表达式或替换 这能回答你的问题吗? Pyspark replace strings in Spark dataframe column 【参考方案1】:

使用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  |$1000,000.28|1000000.28|
+---+------------+----------+

【讨论】:

【参考方案2】:

你可以使用string.replace来去掉$符号,然后你可以用float()把字符串转换成浮点数。

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

【讨论】:

以上是关于将带有美元符号的字符串转换为数字的主要内容,如果未能解决你的问题,请参考以下文章