首页 > 解决方案 > Python Pandas 创建 USD_Converted 列

问题描述

我有两个数据框,交易

Currency     Deal_Amount
0   USD           18.40
1   USD           18.40
2   USD           5559.00
3   USD           14300.00
4   USD           1000.00
5   EUR           3072.00
6   USD           500.00
7   CAD           100000.00
8   USD           250.00
15  EUR           6000.00

和货币汇率

currency_code   year quarter    from_usd_rate   to_usd_rate
AED             2018    3           3.67285      0.27226813
ARS             2018    3            17.585      0.056866648
AUD             2018    3            1.27186     0.786250059
BRL             2018    3            3.1932      0.313165477
CAD             2018    3            1.2368      0.808538163
EUR             2018    3            0.852406    1.173149884
GBP             2018    3            0.747077    1.338550109
GHS             2018    3            4.4         0.227272727

我想在交易中创建一个列来转换交易 ['Currency'] != U​​SD 的交易,并将 currency_rate['to_usd_rate'] 应用于交易 ['Deal_Amount'] 以获得美元转换金额。

到目前为止我试过

def convert_amount(data):
  if data['Currency']==currency_rates['currency_code']:
  Converted_amount=data['Deal_Amount'] * currency_rates['to_usd_rate']
  return Converted_amount

但它不工作。

标签: pythonpandas

解决方案


您可以merge使用fillna1 作为新费率

A = df1.merge(df2, left_on='Currency', right_on='currency_code', how='left').fillna(1)
df1['converted'] = A['Deal_Amount']*A['to_usd_rate']

输出

    index Currency  Deal_Amount     converted
0      0      USD         18.4     18.400000
1      1      USD         18.4     18.400000
2      2      USD       5559.0   5559.000000
3      3      USD      14300.0  14300.000000
4      4      USD       1000.0   1000.000000
5      5      EUR       3072.0   3603.916444
6      6      USD        500.0    500.000000
7      7      CAD     100000.0  80853.816300
8      8      USD        250.0    250.000000
9     15      EUR       6000.0   7038.899304

推荐阅读