货币换算
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 值?
您可以按如下方式使用 merge
和 np.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
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 值?
您可以按如下方式使用 merge
和 np.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