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

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)

【讨论】:

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

将 PHP 字符串(html 源代码)转换为 jQuery 对象美元符号 $?

js将人名币数字格式转换为为美元数字格式

将 Long/ULong 转换为带有填充零的无符号十六进制字符串

将带有前导“0x”的十六进制字符串转换为C++中的有符号短字符串?

将十进制字符串 IP 掩码转换为带有尾随零的无符号整数

编程:将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换为整数的函数)。