2016-02-12 21 views
7

Şöyle iki sütunlu taksi veri dataframe var pandas. Şimdi, her ilçedeki en iyi 5 mahalleyi en çok sayıda alıcı ile bulmak istiyorum. Bu çalıştı: Ben sadece her birinden ilk 5 olsun kiGrup tarafından ve bulmak üst n value_counts

borough       
Bronx   High Bridge   3424 
       Mott Haven   2515 
       Concourse Village  1443 
       Port Morris   1153 
       Melrose    492 
       North Riverdale  463 
       Eastchester   434 
       Concourse    395 
       Fordham    252 
       Wakefield    214 
       Kingsbridge   212 
       Mount Hope    200 
       Parkchester   191 
...... 

Staten Island Castleton Corners  4 
       Dongan Hills    4 
       Eltingville    4 
       Graniteville    4 
       Great Kills    4 
       Castleton    3 
       Woodrow     1 

Nasıl filtrelerim: Bana böyle bir şey verir

df['Neighborhood'].groupby(df['Borough']).value_counts() 

? Benzer bir başlık ile birkaç soru olduğunu biliyorum, ancak davamma yardımcı olmadılar.

cevap

11

Sana nlargest kullanabilirsiniz düşünüyorum - değiştirebileceğiniz 15 için:

s = df['Neighborhood'].groupby(df['Borough']).value_counts() 
print s 
Borough      
Bronx   Melrose   7 
Manhattan  Midtown   12 
       Lincoln Square  2 
Staten Island Grant City  11 
dtype: int64 

print s.groupby(level=[0,1]).nlargest(1) 
Bronx   Bronx   Melrose  7 
Manhattan  Manhattan  Midtown  12 
Staten Island Staten Island Grant City 11 
dtype: int64 

ek sütunlar hazırlandı elde edildi belirtilen seviye bilgi

+1

o l = 0 fazladan bir seviyede yaratıyor, sadece eklemek s.index.droplevel (seviye = 0) –

+0

@Nemish Kanwar - Teşekkürler iyi fikir. Veya 'print s.groupby (level = 0) .nlargest (1) .reset_index (level = 0, drop = True)' – jezrael

3

Sen hafifçe uzatarak tek bir satırda yapabilirsiniz senin 'nlargest' ile orijinal GroupBy:

>>> df.groupby(['Borough', 'Neighborhood']).Neighborhood.value_counts().nlargest(5) 
Borough  Neighborhood Neighborhood 
Bronx   Melrose   Melrose   1 
Manhattan  Midtown   Midtown   1 
Manhatten  Lincoln Square Lincoln Square 1 
       Midtown   Midtown   1 
Staten Island Grant City  Grant City  1 
dtype: int64 
İlgili konular