使用.loc和日期检索值

2024-09-30 22:15:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个数据帧。一个用于每日外汇价格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在DataFramed中设置列,但没有成功。使用以下方法:

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。有没有更好的办法?我做错什么了吗

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


Tags: 数据datenaneurlocusdfxbh
1条回答
网友
1楼 · 发布于 2024-09-30 22:15:01

按列FUND_TOTAL_ASSETS_CRNCY^{}使用rename

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

相关问题 更多 >