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