pandas 通过查找表(第三个 Dataframe )在两个 Dataframe 上相乘系列

w41d8nur  于 2022-12-28  发布在  其他
关注(0)|答案(1)|浏览(113)

我在一个名为"stock_data"的数据框中有股票价格,如下所示:

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())
stock_data

``

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"的系列中的货币汇率。注意,索引与stock_data中的列名相同,以供参考

currency_list=pd.Series(['USD','CAD','EUR','CHF'], index="A B C D".split())
currency_list

``

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())
Forex_data

'
``

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)-
2022年5月1日A股价格为50.499 * 0.194,以此类推。
我被卡住了,不知道该怎么办-有人能帮忙吗?

taor4pac

taor4pac1#

示例

import numpy as np
df1 = pd.DataFrame(np.random.randint(5, 20,(5,4)), index=pd.date_range(start='1/1/2022', periods=5),columns = list("ABCD"))
s1 = pd.Series(['USD','CAD','EUR','CHF'], index=list("ABCD"))
df2 = pd.DataFrame(np.random.randint(10,40, (5, 3)) / 10, index=pd.date_range(start='1/1/2022', periods=5),columns = "USD CAD EUR".split())

第一个月

A   B   C   D
2022-01-01  8   19  6   12
2022-01-02  15  8   18  6
2022-01-03  9   11  14  17
2022-01-04  17  13  17  17
2022-01-05  11  12  10  19

s1

A    USD
B    CAD
C    EUR
D    CHF
dtype: object

df2

USD CAD EUR
2022-01-01  2.7 1.0 1.4
2022-01-02  3.6 3.1 1.2
2022-01-03  2.7 2.1 1.0
2022-01-04  3.8 2.4 3.6
2022-01-05  2.0 1.6 3.6

代码

Mapdf1的列并使用mul

out  = df1.set_axis(df1.columns.map(s1), axis=1).mul(df2).reindex(df2.columns, axis=1)

out

USD     CAD     EUR
2022-01-01  21.6    19.0    8.4
2022-01-02  54.0    24.8    21.6
2022-01-03  24.3    23.1    14.0
2022-01-04  64.6    31.2    61.2
2022-01-05  22.0    19.2    36.0

相关问题