如何借助汇率表将多币种股票价格转换为CHF基准币种?
将股票价格转换为CHF基准币种的解决方案
现有数据结构
股票价格数据(stock_data)
生成代码:
import pandas as pd import numpy as np stock_data = pd.DataFrame(np.random.rand(5,4)*100, index=pd.date_range(start='1/1/2022', periods=5),columns = "A B C D".split())
数据输出:
A B C D 2022-01-01 50.499862 65.011650 91.563112 45.107004 2022-01-02 53.218393 86.534942 54.575897 28.154673 2022-01-03 96.827564 49.782633 19.894127 47.529094 2022-01-04 18.226396 27.908952 67.141263 66.101363 2022-01-05 1.061750 29.833253 94.161190 85.542529
股票币种映射(currency_list)
生成代码:
currency_list=pd.Series(['USD','CAD','EUR','CHF'], index="A B C D".split())
数据输出:
A USD B CAD C EUR D CHF dtype: object
汇率数据(forex_data)
生成代码:
forex_data=pd.DataFrame(np.random.rand(5,3), index=pd.date_range(start='1/1/2022', periods=5),columns = "USD CAD EUR".split())
数据输出:
USD CAD EUR 2022-01-01 0.194238 0.996759 0.900205 2022-01-02 0.366476 0.054540 0.474838 2022-01-03 0.709269 0.723097 0.655717 2022-01-04 0.557701 0.878100 0.824146 2022-01-05 0.865796 0.432785 0.222463
转换实现步骤
- 为汇率数据添加CHF列,值设为1(CHF作为基准币种,自身汇率为1)
- 根据
currency_list的映射,将stock_data的每一列与forex_data中对应币种的汇率列匹配 - 使用
mul方法按元素相乘,完成转换
完整代码
# 添加CHF汇率列 forex_data['CHF'] = 1.0 # 根据币种映射,获取每只股票对应的汇率列并对齐列名 exchange_rates = forex_data.loc[:, currency_list.values] exchange_rates.columns = currency_list.index # 执行转换 stock_data_chf = stock_data.mul(exchange_rates, axis=0)
转换结果示例
A B C D 2022-01-01 9.8090 64.801000 82.425600 45.107004 2022-01-02 19.5030 4.720000 25.914000 28.154673 2022-01-03 68.6770 36.007000 13.045000 47.529094 2022-01-04 10.1650 24.506000 55.334000 66.101363 2022-01-05 0.9190 12.912000 20.947000 85.542529
(注:结果保留两位小数以简化展示,实际计算为精确值)
内容的提问来源于stack exchange,提问作者Varun Agrawal
相关产品推荐
相关产品推荐

