大熊猫数据框中的多索引问题

时间:2017-06-05 18:48:09

标签: python-2.7 pandas

您好我的数据格式如下enter image description here

我正在尝试对这个列索引(第一级)跨越几个月的数据集执行一些数据。作为一个实例如果我只需要第一个月的信息,我将继续执行以下操作。但它只是犯了错误,文档并没有真正帮助我。我现在已经尝试过很多次了。

    VolData = pd.read_excel(VolDataFilePath,sheetname=r'BaseFwdVols',header=[0,1],index_col=None)
IndexList = ['SPTR','SPTRMDCP','NDDUEAFE','RU20INTR','AGGBOND','HYBOND']

Test = VolData.loc[:,(slice(1),IndexList)]

以下消息不断错误:`

`KeyError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (1)'

我在这里缺少什么?

非常感谢

1 个答案:

答案 0 :(得分:1)

您需要对MultiIndex进行排序。这是我放在一起的一个简单例子:

df

foo     b                         a               
b       5     4      3     1      3      2       1
a                                                 
abc   NaN  47.0    NaN  45.0  243.0    NaN   123.0
def   NaN   NaN  456.0   NaN    NaN    NaN  1176.0
ghb   NaN   NaN    NaN   NaN    NaN  567.0     NaN
lop  12.0   NaN    NaN   NaN    NaN    NaN     NaN
mno   NaN   NaN   87.0   NaN    NaN    NaN     NaN

请注意,列多索引按降序排列。

尝试此操作会给我一个错误:

df.loc[:, ('b', [5,4])]
KeyError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (0)'

修复:

df.sort_index(axis=1).loc[:, ('b', [5,4])]
foo     b      
b       4     5
a              
abc  47.0   NaN
def   NaN   NaN
ghb   NaN   NaN
lop   NaN  12.0
mno   NaN   NaN