>我有三个数据帧。一个用于每日外汇价格d_fx
,一个用于每日资产净值d
,一个用于参考数据m
。示例如下:
EUR GBP USD
date
2012-01-01 1.2961 1.5543 1.0
2012-01-02 1.2934 1.5514 1.0
2012-01-03 1.3050 1.5649 1.0
2012-01-04 1.2943 1.5620 1.0
date Assets
BUTBERI BH Equity 2012-01-01 14.32000
2012-01-02 14.32000
2012-01-03 14.32000
2012-01-04 14.34000
2012-01-05 14.34000
JGGFLEU LX Equity 2012-01-01 19.88656
2012-01-02 20.01639
2012-01-03 19.99365
2012-01-04 20.31770
2012-01-05 20.35174
ICEPROB FH Equity 2012-01-01 NaN
2012-01-02 NaN
2012-01-03 NaN
2012-01-04 NaN
2012-01-05 NaN
FUND_TOTAL_ASSETS_CRNCY
BUTBERI BH Equity USD
ICEPROB FH Equity EUR
JGGFLEU LX Equity EUR
我正在尝试使用 .loc 在数据帧d
中设置列,但没有成功。使用以下方法:
idx = pd.IndexSlice
d.loc[idx[:,:], 'FX_price'] =
d_fx.loc[d.index.get_level_values(1),
m.loc[d.index.get_level_values(0)].values]
脚本完成且没有错误,但FX_price
中的所有值都NaN
。有没有更好的方法可以做到这一点?我做错了什么吗?
提前非常感谢。 `修订后的数据帧
按列FUND_TOTAL_ASSETS_CRNCY
使用rename
与DataFrame.lookup
d = d.rename(index=m['FUND_TOTAL_ASSETS_CRNCY'], level=0)
print (d)
Assets
date
USD 2012-01-01 14.32
2012-01-02 14.32
2012-01-03 14.32
2012-01-04 14.34
d['FX_price'] = d_fx.lookup(d.index.get_level_values(1), d.index.get_level_values(0))
print (d)
Assets FX_price
date
USD 2012-01-01 14.32 1.0
2012-01-02 14.32 1.0
2012-01-03 14.32 1.0
2012-01-04 14.34 1.0