2015-08-26 117 views
0

我有這個簡單的數據幀DF的選擇行:大熊貓 - 最大value_counts

User,C,G 
111,ar,1 
112,es,1 
112,es,1 
112,es,2 
113,ca,2 
113,ca,3 
113,ca,3 
114,en,4 

我進行分組,通過:

result = df.groupby(['User','G'])['C'].value_counts() 

獲得:

User G  
111 1 ar 1 
112 1 es 2 
     2 es 1 
113 2 ca 1 
     3 ca 2 
114 4 en 1 

我的目標是要去僅保留每個組最多有value_count的行,以便出現結果數據框:

User G  
111 1 ar 1 
112 1 es 2 
113 3 ca 2 
114 4 en 1 

我還發現this涉及到類似的問題的問題,但我不能想出如何應用該方法在我的情況。

回答

2

您可以先創建一個掩碼來指示組中的某一行是否爲maximum

mask = result.groupby(level='User').apply(lambda g: g == g[g.idxmax()]) 
mask 

User G  
111 1 ar  True 
112 1 es  True 
     2 es False 
113 2 ca False 
     3 ca  True 
114 4 en  True 
dtype: bool 

,然後選擇使用這個布爾面具

result[mask] 

User G  
111 1 ar 1 
112 1 es 2 
113 3 ca 2 
114 4 en 1 
dtype: int64 
+0

什麼多項相等出現?有沒有辦法只選擇單個最大值?我的意思是,有時會發生最大值不是唯一的... –