我正试图用几种货币将我的经纪费换算成美元。因此,如果我以欧元支付费用,费用应乘以该天的欧元/美元汇率
数据帧示例:
import pandas as pd
df = pd.DataFrame({"Fee Coin": ["EUR", "BTC"],
"Fee": [3, 0.0005],
"USD Price": [1.05, 1.1],
"BTC Price": [24000, 27000]})
第一行的输出应为3.15,第二行的输出应为13.5。输出应显示在一个新的列中,我已尝试调用费用(美元)
我所尝试的,给出了错误的计算:
for value in df["Fee Coin"]:
if value == "EUR":
df["Fee in USD"] = df.Fee*df["USD Price"]
elif value == "BTC":
df["Fee in USD"] = df.Fee*df["BTC Price"]
因为您只有两个类别:EUR和BTC,所以可以使用np.where
输出:
更新: 对于多种货币,最好有一张从收费硬币到列名的地图,即
然后使用np.select
数据帧:
输出:
印刷品:
计算错误的原因是,对于每一行,都要乘以整个
df['Fee'] column with df['USD Price'] or df['BTC Price']
。基本上基于 在最后一行的费用硬币价值上,您的费用栏将被USD/BTC价格栏乘以在您的情况下,由于最后一行包含“BTC”硬币,因此它将乘以BTC价格,结果如下:
因此,基本上应该乘以特定的行值,而不是乘以整个列
最终数据帧:
p.S.对于三种或三种以上的货币,您可以在条件If Else块中添加条件
相关问题 更多 >
编程相关推荐