货币换算

Currency translation

Snapshot of dataframe 我有一个由 U.S 组成的大数据框。 20 年期间的美元报表和加元报表。我需要将加拿大报表转换为 U.S.$,方法是将它们除以该特定年份的平均汇率。

df = pd.Dataframe([[1998,'CAD',123,1234],[1999,'CAD',345,1233],[1999,'USD',454,1232],[1999,'USD',2333,3456]], columns=['year','currency','net_profit','revenue'])

year currency net_profit revenue
1998 CAD      123        1234
1999 CAD      345        1233
1999 USD      454        1232
1999 USD      2333       3456

我可以用这个代码找到1998年的CAD公司

 filter_1998 = firm[(firm['currency']== 'CAD') & (firm.Year ==1998)]

之后,我需要用 1998 年的平均汇率 1USD /1,4811 CAD 来转换这些行。要转换这些行的加拿大语句,我想放入一个条件。

if firm[(firm['currency'] == CAD)&(firm['year']==1998:
pd.divide(x) / 1,4811
Translated CAD values into USD.

第一行除以汇率。期望的结果如下所示:

    year currency net_profit revenue
    1998 CAD      83.05      833.16
    1999 CAD      345        1233
    1999 USD      454        1232
    1999 USD      2333       3456

那么,我如何才能仅使用我根据条件选择的行进行计算,并且仍然将 CAD 值替换为 USD 值?

您可以按如下方式使用 mergenp.where。 我假设你在另一个数据框中有每年的平均利率。

import numpy as np
import pandas as pd
df = pd.DataFrame([[1998,'CAD',123,1234],[1999,'CAD',345,1233],[1999,'USD',454,1232],[1999,'USD',2333,3456]], columns=['year','currency','net_profit','revenue'])
df_rate = pd.DataFrame([[1998, 1.4811], [1999, 1.3798]],columns=['year','rate'])
df = df.merge(df_rate, how='left', on='year')
df['revenue'] = np.where(df['currency'] == 'CAD',df['revenue']/df['rate'],df['revenue'])
df

输出结果如下

    year    currency    net_profit  revenue     rate
0   1998    CAD     123     833.164540  1.4811
1   1999    CAD     345     893.607769  1.3798
2   1999    USD     454     1232.000000     1.3798
3   1999    USD     2333    3456.000000     1.3798