首页 > 解决方案 > Pyspark 货币转换器

问题描述

我有一个df这样的数据框:

df.show()

输出:

+-----+--------+----------+
|price|currency|      date|
+-----+--------+----------+
|   10|     USD|2018-07-03|
|   10|     USD|2018-03-19|
|    8|     SEK|2018-07-10|
|   10|     NOK|2018-05-25|
|    5|     EUR|2018-05-13|
+-----+--------+----------+

我想根据指定将每个转换priceEUR并放入列。price_eurdate

+-----+--------+----------+---------+
|price|currency|      date|price_eur|
+-----+--------+----------+---------+
|   10|     USD|2018-07-03|     8.57|
|   10|     USD|2018-03-18|     8.12|
|    8|     SEK|2018-07-10|     0.78|
|   10|     NOK|2018-05-25|     1.05|
|    5|     EUR|2018-05-13|        5|
+-----+--------+----------+---------+

有谁知道这样做的有效方法?

虽然有pandas数据框我可以简单地使用CurrencyConverter python API,但我无法找到一种方法来做到这一点pyspark

标签: dataframepysparkcurrency

解决方案


创建一个 udf 并使用相同的 API。

from currency_converter import CurrencyConverter
import pyspark.sql.functions as F
from pyspark.sql.types import FloatType

c = CurrencyConverter()
convert_curr = F.udf(lambda x,y : c.convert(x, y, 'EUR'), FloatType())
df = df.withColumn('price_eur', convert_curr('price', 'currency'))

编辑:

首先使用以下命令安装 python 包,

pip install currencyconverter

推荐阅读