2017-01-18 78 views
2

的2級我有一個2級數據幀filering在multindex熊貓

occupation  gender 
administrator F   0.455696 
       M   0.544304 
artist   F   0.464286 
       M   0.535714 
doctor   M   1.000000 
educator  F   0.273684 
       M   0.726316 
engineer  F   0.029851 
       M   0.970149 

我想過濾器2級,這意味着我想在性別,提取關於女性的所有數據進行過濾。

我的嘗試是:

df.loc[(slice(None),"F"),:] 

,但它沒有任何效果,這意味着它返回顯示男女都未經過濾的數據幀。

有關如何做到這一點的任何提示? THX提前

回答

2

你有一個系列,而不是一個數據幀,嘗試:

df.loc[(slice(None),"F")] 

或者你可以將其轉換爲數據幀,然後使用數據幀語法:

df.to_frame().loc[(slice(None),"F"), :] 
+0

真是一個愚蠢的我!謝謝你的隊友,它完美的工作。當然,更簡單的解決方案是重置索引。但我覺得這會浪費記憶。我對嗎?我們應該能夠直接對索引進行操作,而不必重新設置並重新設置。當然是 – user3623123

+0

。如果你不需要數據框架,Series語法將是一個更好的方法。答案是試圖顯示這裏的區別。 – Psidom

0

在DF應用reset_index(),然後切片

df = df.reset_index() 
df[df['gender']== 'F'] 
+0

是的,這是簡單的解決方案,但我一直在尋找一個解決方案直接作用於索引,否則我覺得設置和重置索引一直會浪費內存。但我不確定我說的是否正確。 – user3623123

+0

的確如此。我通常reset_index,因爲它在繪圖時很方便:) – Vaishali

+0

謝謝你隊友! – user3623123