让我简化一下。
我有货币会话键DataFrame,它有2列。以美元为单位的货币和即期汇率。
currency fx_rate
INR 0.013223
JPY 0.008653
MYR 0.239000
CNY 0.157300
HKD 0.128160我的第二个DataFrame是
currency ID amount outstanding
INR 78waf 1000000000
JPY 48waf 100000000000
MYR 38waf 10000000
CNY 28waf 1000000000
HKD 18waf 10000000如何根据货币键DataFrame在我的第二个DF (“转换金额”)中创建第四列?转换需要多次( INR: 0.013223 * 1000000000 = 13223000)
最终目标:
currency ID amount outstanding CONVERTED AMOUNT
INR 78waf 1000000000 13223000
JPY 48waf 100000000000 etc..
MYR 38waf 10000000 ...
CNY 28waf 1000000000 ...
HKD 18waf 10000000 ...发布于 2022-02-14 22:16:42
您的最后两个数据文件的列似乎比它们应该的多。
不管怎么说,如果我正确理解了你的问题,我可能会这样做:
df["CONVERTED AMOUNT"] = df["amount"] * 0.013223发布于 2022-02-14 22:18:38
您可以将"fx_rate“映射到df2中的”货币“列,并将其与”amount_outstanding“相乘:
df2['converted_amount'] = df2['currency'].map(df1.set_index('currency')['fx_rate']) * df2['amount_outstanding']您还可以使用“货币”进行set_index,并将匹配货币和reset_index上的金额乘以。
df2 = df2.set_index('currency')
df2['converted_amount'] = df2['amount_outstanding'].mul(df1.set_index('currency')['fx_rate'])
df2 = df2.reset_index()另一个选项是在“货币”上merge DataFrames并乘以相关列:
merged = df2.merge(df1, on='currency')
merged['converted_amount'] = merged['amount_outstanding'] * merged['fx_rate']
out = merged.drop(columns=['fx_rate'])输出:
currency ID amount_outstanding converted_amount
0 INR 78waf 1000000000 13223000.0
1 JPY 48waf 100000000000 865300000.0
2 MYR 38waf 10000000 2390000.0
3 CNY 28waf 1000000000 157300000.0
4 HKD 18waf 10000000 1281600.0发布于 2022-02-15 00:55:37
df = pd.merge(df2, df1, how = 'left', on = 'currency')
df['converted_amount'] = df['amount_outstanding'] * df['fx_rate']https://stackoverflow.com/questions/71118853
复制相似问题