使用数据框进行货币换算

时间:2018-09-18 14:23:04

标签: python-3.x

我有一个使用不同货币(例如美元,欧元和加元)的交易数据框,其中每一行都是交易,货币由货币列指定,特定日期从给定货币到CAD的转换率是在后续栏中指定

[1] 7 8 1 2 3

我想在df中定义一个新列,该列显示转换为CAD的交易价值。如何在不使用循环的情况下以编程方式执行此操作?

2 个答案:

答案 0 :(得分:0)

df.assign(ValueCAD = df.values[tuple(df.Currency.transform(lambda x: dict(zip(df.columns, 
         range(len(df.columns)))).get(x)).reset_index().values.T)].astype(float) * df.Value)
Out[230]: 
   Value Currency  CAD  USD  EUR  ValueCAD
0      1      CAD    1  1.3  1.4       1.0
1      2      USD    1  1.2  1.5       2.4
2      3      EUR    1  1.4  1.4       4.2
3      4      USD    1  1.1  1.4       4.4

您也可以这样做:

df.merge(df.melt(['Value','Currency']).pipe(lambda x: x[x.Currency==x.variable].
         drop('variable',1)).pipe(lambda x:x.assign(ValueCAD=x.Value*x.value)).
         drop('value',1))
Out[241]: 
   Value Currency  CAD  USD  EUR  ValueCAD
0      1      CAD    1  1.3  1.4       1.0
1      2      USD    1  1.2  1.5       2.4
2      3      EUR    1  1.4  1.4       4.2
3      4      USD    1  1.1  1.4       4.4

答案 1 :(得分:0)

一种方法是使用df.lookup

df["Value_in_CAD"] = df.Value * df.lookup(df.index, df.Currency)

这给了我

In [12]: df
Out[12]: 
   CAD Currency  EUR  USD  Value  Value_in_CAD
0    1      CAD  1.4  1.3      1           1.0
1    1      USD  1.5  1.2      2           2.4
2    1      EUR  1.4  1.4      3           4.2
3    1      USD  1.4  1.1      4           4.4