Pyspark 列转换具有正数和负数的字符串

Posted

技术标签:

【中文标题】Pyspark 列转换具有正数和负数的字符串【英文标题】:Pyspark column convert a string which has both positive and negative numbers 【发布时间】:2020-09-03 10:02:01 【问题描述】:

我有一个字符串数据类型的 pysapark 列。但它有正数和负数。如何将它们转换为数字。

总金额 = 交易量 * price_perunit 目前 Volume = String, price_perunit = double 预期输出:

Volume     price_perunit     total amount
-0.75      100                -75
  8        100                 800
 -0.01     8                   -0.08

现在,当我乘法时,我得到以下错误的结果,因为负号不再可用。

Volume     price_perunit     total amount
-0.75      100                75
  8        100                 800
 -0.01     8                   0.08

【问题讨论】:

【参考方案1】:

只是投射。

df.printSchema()
root
 |-- Volume: string (nullable = true)
 |-- price_perunit: double (nullable = true)


df.withColumn('Volume', col('Volume').cast('double')) \
  .withColumn('total amount', expr('Volume * price_perunit')) \
  .show()

+------+-------------+------------+
|Volume|price_perunit|total amount|
+------+-------------+------------+
| -0.75|          100|       -75.0|
|   8.0|          100|       800.0|
| -0.01|            8|       -0.08|
+------+-------------+------------+

【讨论】:

以上是关于Pyspark 列转换具有正数和负数的字符串的主要内容,如果未能解决你的问题,请参考以下文章

re.findall带负数,我的代码仅适用于正数

js 科学计数法 转换为 数字字符 突破幂数正数21位,负数7位的自动转换限制

在pyspark中将带有字符串json字符串的列转换为带有字典的列

Pyspark 从具有不同列的行/数据创建 DataFrame

如何将所有日期格式转换为日期列的时间戳?

pyspark 在循环中将数组转换为字符串