Pyspark 货币转换器
Posted
技术标签:
【中文标题】Pyspark 货币转换器【英文标题】:Pyspark Currency Converter 【发布时间】:2018-10-05 06:57:53 【问题描述】:我有一个这样的数据框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|
+-----+--------+----------+
我想根据指定的date
将每个price
转换为EUR
并放入price_eur
列。
+-----+--------+----------+---------+
|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
中找不到方法。
【问题讨论】:
【参考方案1】:创建一个 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
【讨论】:
谢谢。但我不能让它工作:ModuleNotFoundError: No module named 'currency_converter'
.
您必须先安装 api(我假设您已经安装了)。检查编辑。
是的,我将它用于 pandas 数据框。但是,我想,从中创建udf
似乎很棘手。
udf
只是让您可以访问每一行数据框。在udf
中,您可以像在pandas
中一样使用python 的任何函数、包或库。现在可以用了吗?
这个包也需要安装在所有worker上。也许这就是这里的问题。以上是关于Pyspark 货币转换器的主要内容,如果未能解决你的问题,请参考以下文章