导入的Excel文件在大pandas中的MultiIndex问题

我导入了一张Excel文件并在pandasDataFrame中parsing。

path = 'bla.xls' x = pd.ExcelFile(path) sheets = x.sheet_names table = x.parse(sheets[36], header=2) 

这似乎工作和DataFrame对象具有预期的MultiIndex指数:

 In[180]: table.index Out[180]: MultiIndex(levels=[[u'Gesamt', u'Studiengang Hochschulbenennung'], [u'Bekleidungstechnik', u'Betriebswirtschaft', u'Biomedical Engineering', u'Ernährungs- und Hygienetechnik', u'Facility Management', u'Kommunikations- und Softwaretechnik', u'Lebensmittel, Ernährung, Hygiene', u'Maschinenbau', u'Pharmatechnik', u'Systems Engineering', u'Textil- und Bekleidungsmanagement', u'Wirtschaftsinformatik', u'Wirtschaftsingenieurwesen', u'Wirtschaftsingenieurwesen - Produktionsmanagement insbes. Fahrzeugwirtschaft'], [u'% innerhalb von Studiengang Hochschulbenennung', u'Anzahl']], labels=[[1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1], [1, -1, 3, -1, 6, -1, 7, -1, 5, -1, 9, -1, 0, -1, 10, -1, 8, -1, 11, -1, 2, -1, 12, -1, 13, -1, 4, -1, -1, -1], [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]]) 

不幸的是,我不能select一行:

 In [181]: table.ix[('Studiengang Hochschulbenennung', 'Betriebswirtschaft')] Out[182]: KeyError: 'Key length (2) was greater than MultiIndex lexsort depth (0)' 

事实上:

 In [182]: table.index.lexsort_depth Out[182]: 0 

 In [183]:len(table.index.levels) Out[183]: 3 

…这是不连贯的,是吗?

我怎样才能解决这个问题,并增加table.index.lexsort_depth3

编辑 :有一个类似的问题回答很好的另一个问题的连接。

在select行之前,您需要对数据框进行sorting:

 table.sort(inplace=True) table.ix[('Studiengang Hochschulbenennung', 'Betriebswirtschaft')] 

分拣后,

 In [21]: df.index.lexsort_depth Out[21]: 3