使用 .loc 和日期检索值



>我有三个数据帧。一个用于每日外汇价格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使用renameDataFrame.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

最新更新