Pyspark Конвертер валют - PullRequest
       3

Pyspark Конвертер валют

0 голосов
/ 05 октября 2018

У меня есть фрейм данных 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|
+-----+--------+----------+

, и я хочу преобразовать каждый 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|
+-----+--------+----------+---------+

Кто-нибудь знает эффективный способ сделать это?

Имея pandas фрейм данных, я могу просто использовать CurrencyConverter python API , я не смог найтиспособ сделать это в pyspark.

1 Ответ

0 голосов
/ 05 октября 2018

Создайте 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
...