使用.loc和日期检索值

时间:2018-09-24 12:10:42

标签: python python-3.x pandas

我有三个DataFrame。一种用于每日外汇价格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在DataFrame 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。有一个更好的方法吗?我做错了什么吗?

非常感谢。 ` 修改的数据框

1 个答案:

答案 0 :(得分:1)

rename的{​​{1}}与DataFrame.lookup一起使用:

FUND_TOTAL_ASSETS_CRNCY