2015-08-27 54 views
1

this問題啓動和下面的數據幀DF:大熊貓 - GROUPBY,計數值和刪除等事件

U,C,G 
111,ar,1 
112,es,1 
112,es,1 
112,es,2 
113,en,2 
113,en,3 
113,en,3 
114,ca,4 
112,es,1 
112,es,1 
112,es,1 
115,it,1 
115,it,2 
115,it,3 

我分組,並以這種方式計算值:

grouped = df.groupby(['U','G'])['C'].value_counts() 

,然後保持每組最大:

mask = grouped.groupby(level='U').apply(lambda g: g == g[g.idxmax()]) 
grouped = grouped[mask] 

獲得:

U G  
111 1 ar 1 
112 1 es 5 
113 3 en 2 
114 4 ca 1 
115 1 it 1 
    2 it 1 
    3 it 1 

現在有些U的值有多個相同的出現次數。我的目標是隻保留U行,並且只丟棄其中一個。在此示例中,生成的數據幀將丟棄115組。

回答

1
>>> grouped[ grouped.groupby(level='U').transform('count') == 1 ] 

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

也可以這樣做:

>>> grouped[ grouped.groupby(level='U').rank(method='max') == 1 ]