簡體   English   中英

以 pandas 的每日匯率轉換價格

[英]Convert prices with daily rate in pandas

我目前正在嘗試用不同貨幣( pricecurrency )的價格( pricevalue )規范化 DataFrame(~600k 行),以便每一行都有歐元的價格。

我想將它們轉換為從列date獲取的每日費率。

我當前的“解決方案”(使用在 PyPI 上找到的CurrencyConverter package)如下所示:

from currency_converter import CurrencyConverter

c = CurrencyConverter(fallback_on_missing_rate=True,fallback_on_missing_rate_method="last_known")

def convert_currency(row):
     return c.convert(row["pricevalue"], row["pricecurrency"],row["date"])

df["converted_eur"] = df.apply(lambda x: convert_currency(x),axis=1)

然而,這個解決方案需要很長時間才能運行。

有沒有更快的方法來實現這一點? 任何幫助表示贊賞:)

這么說聽起來很奇怪,但不幸的是你沒有做錯任何事!

貨幣插值代碼正在做你需要它做的事情,而不是別的。 在您的代碼中,您所做的一切都是正確的。 這意味着您無法通過快速修復來獲得性能。 你有一個雙 lambda 你只需要一個,但這不會有太大的區別:

IE

df["converted_eur"] = df.apply(lambda x: convert_currency(x),axis=1)

應該

df["converted_eur"] = df.apply(convert_currency, axis=1)

首先要做的是通過添加一些 UI 來了解此處理實際需要多長時間:

from tqdm import tqdm

df["converted_eur"] = df.progress_apply(convert_currency, axis=1)

一旦您知道這項工作實際需要多長時間,請按順序嘗試這些:

  1. 忍受它。
  2. 單實例並行化,類似於pandarallel
  3. 多實例並行化,例如Dask

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM