Получение значения с использованием .loc и дат - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть три кадра данных.Один для ежедневных валютных цен d_fx, один для дневных значений NAV 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

Я пытаюсь установить столбцы в DataFrame d, используя .loc, но не успешно.Используя следующее:

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 голосов
/ 24 сентября 2018

Используйте rename по столбцу FUND_TOTAL_ASSETS_CRNCY с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...