Python 3.x 实时多索引

Python 3.x 实时多索引,python-3.x,pandas,Python 3.x,Pandas,对于以下数据帧,每个帐户每月可能有不同的费率。我试图找到用于特定交易的利率 例如,如果我正在寻找2018-01-20账户一的利率,我应该得到-1.206412的值 找到该值的最佳方法是什么?我试图使用resample('D').ffill(),但得到了一个错误,因为它似乎不适用于多索引 谢谢 Rate_A Rate_B Rate_C date account 2018-01

对于以下数据帧,每个帐户每月可能有不同的费率。我试图找到用于特定交易的利率

例如,如果我正在寻找2018-01-20账户一的利率,我应该得到-1.206412的值

找到该值的最佳方法是什么?我试图使用resample('D').ffill(),但得到了一个错误,因为它似乎不适用于多索引

谢谢

                    Rate_A    Rate_B    Rate_C
date     account                              
2018-01   one    -1.206412  0.132003  1.024180
          two     2.565646 -0.827317  0.569605
2018-02   one     1.431256 -0.076467  0.875906
          two     1.340309 -1.187678 -2.211372
使用,但它只能使用
DatetimeIndex
,因此首先将第二级转换为列,然后创建
DatetimeIndex

df = df.reset_index(level=1)
df.index = pd.to_datetime(df.index)

df = df.groupby('account').resample('D').ffill()
print (df.head())
                   account    Rate_A    Rate_B   Rate_C
account date                                           
one     2018-01-01     one -1.206412  0.132003  1.02418
        2018-01-02     one -1.206412  0.132003  1.02418
        2018-01-03     one -1.206412  0.132003  1.02418
        2018-01-04     one -1.206412  0.132003  1.02418
        2018-01-05     one -1.206412  0.132003  1.02418

a = df.loc[('one', '2018-01-20'), 'Rate_A']
print (a)
#account  date      
#one      2018-01-20   -1.206412
#Name: Rate_A, dtype: float64
没有重新采样的另一种解决方案使用:

如果日期是日期时间:

d = pd.to_datetime('2018-01-20')
print (d)
2018-01-20 00:00:00

a = df.loc[(d.strftime('%Y-%m'), 'one'), 'Rate_A']
print (a)
date        account
2018-01-01  one       -1.206412
Name: Rate_A, dtype: float64

非常感谢,两种解决方案都非常有效。
d = pd.to_datetime('2018-01-20')
print (d)
2018-01-20 00:00:00

a = df.loc[(d.strftime('%Y-%m'), 'one'), 'Rate_A']
print (a)
date        account
2018-01-01  one       -1.206412
Name: Rate_A, dtype: float64