All*_*ati 4 currency dataframe pyspark
我有一个df这样的数据框:
df.show()
Run Code Online (Sandbox Code Playgroud)
输出:
+-----+--------+----------+
|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|
+-----+--------+----------+
Run Code Online (Sandbox Code Playgroud)
我想根据指定将每个转换price为EUR并放入列price_eur中date。
+-----+--------+----------+---------+
|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|
+-----+--------+----------+---------+
Run Code Online (Sandbox Code Playgroud)
有谁知道这样做的有效方法?
虽然有pandas数据帧,我可以简单地使用CurrencyConverter python API,但我找不到在pyspark.
创建一个 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'))
Run Code Online (Sandbox Code Playgroud)
编辑:
首先使用以下命令安装python包,
pip install currencyconverter
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1708 次 |
| 最近记录: |