我正在尝试对这个列索引(第一级)跨越几个月的数据集执行一些数据。作为一个实例如果我只需要第一个月的信息,我将继续执行以下操作。但它只是犯了错误,文档并没有真正帮助我。我现在已经尝试过很多次了。
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)'
我在这里缺少什么?
非常感谢
答案 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