2017-04-12 91 views
3

這裏選擇大熊貓的數據是一段代碼,實現的是什麼,我試圖做的部分:柱水平/軸1多指標

selection=df.xs(('year2012','3quarter','A'),level=[0,1,2],axis=1) 

我怎樣才能使一個選擇的多重標準軸1的每個級別? 以下似乎是完成此操作的錯誤方法。

selection=df.xs((['year2012','year2015'] , ['3quarter','4quarter'] , 'A'), level=[0,1,2], axis=1

謝謝

回答

2

考慮例如數據幀df

mux = pd.MultiIndex.from_product([ 
     ['year{}'.format(i) for i in range(2010, 2017)], 
     ['{}quarter'.format(i) for i in range(1, 5)], 
     list('ABCD') 
    ]) 

df = pd.DataFrame([np.arange(len(mux))], columns=mux) 

df 

enter image description here

要做到這一點是使用方法pd.IndexSlice

l1 = ['year2012','year2015'] 
l2 = ['3quarter','4quarter'] 
l3 = 'A' 

df.loc[:, pd.IndexSlice[l1, l2, l3]] 

enter image description here

+0

謝謝你的幫忙! 這條消息出現了,因爲我將解決方案應用於我的數據框 - _italic_KeyError:'MultiIndex Slicing要求索引是完全放大的元組len_italic_ 但是,這是因爲我錯過了對索引進行排序的步驟。用這個代碼修復它''mydataframe.sort_index(axis = 1,inplace = True)'code' – Kdog

+0

不客氣! – piRSquared