2017-09-14 230 views
1

我有兩列數據幀:熊貓數據幀的貨幣轉換

col1  | col2 

20   EUR 
31   GBP 
5   JPY 

我可以有10000行這樣

如何做到快速的貨幣轉換爲基礎貨幣是GBP?

我應該使用easymoney嗎? 我知道如何將轉換應用到單行,但我不知道如何快速遍歷所有行。

編輯: 我想申請某事物:

def convert_currency(amount, currency_symbol): 
    converted = ep.currency_converter(amount=1000, from_currency=currency_symbol, to_currency="GBP") 
    return converted 


df.loc[df.currency != 'GBP', 'col1'] = convert_currency(currency_data.col1, df.col2 
                       ) 

,但它並沒有正常工作。

+0

覆蓋該所述行,像這樣'DF [ 'COL1'] =公式* DF [ 'COL1']'。我認爲 – deaspo

+0

有沒有快速的選擇,以熊貓攝入貨幣比率?我有什麼30差異貨幣? – BlueDog

+0

你有匯率和在哪種形式? – MaxU

回答

1

加入第三列,每種貨幣的兌換率加入col2中的貨幣代碼。然後創建一個包含已轉換金額的列。

dfRate: 
code | rate 
EUR 1.123 
USD 2.234 

df2 = pd.merge(df1, dfRate, how='left', left_on=['col2'], right_on=['code']) 

df2['translatedAmt'] = df2['col1']/df2['rate'] 
+0

它只爲第一個'x'列'x'等於dfRate的len。 – BlueDog

+0

它輸入的所有後面的列NaN – BlueDog

+0

您是否遍歷任一數據框? – Dan

0
df = pd.DataFrame([[20, 'EUR'], [31, 'GBP'], [5, 'JPY']], columns=['value', 'currency']) 
print df 

    value currency 
0  20  EUR 
1  31  GBP 
2  5  JPY 

def convert_to_gbp(args): # placeholder for your fancy conversion function 
    amount, currency = args 
    rates = {'EUR': 2, 'JPY': 10, 'GBP': 1} 
    return rates[currency] * amount 

df.assign(**{'In GBP': df.apply(convert_to_gbp, axis=1)}) 

    value currency In GBP 
0  20  EUR  40 
1  31  GBP  31 
2  5  JPY  50