2016-11-13 53 views
0

我有一個熊貓數據框,並有三列,State_Name,County_Name,Population。人口是一個數字數據。我想回答的問題只是看每個州三個人口最多的縣,三個人口最多的州是什麼。所以我認爲首先我需要groupby State_Name和County_Name。我可以做到這一點。但在此之後,我很困惑如何繼續。我是熊貓新手,所以指導將有所幫助排序在每個小組和總結前三個值

+1

檢查熊貓節中的其他問題,看看它們如何顯示輸入/原始數據和預期輸出。 – Zero

回答

3

以下是一些虛擬數據(請始終在將來包含您的數據樣本)。

State_Name,County_Name,Population 
State1,State1_A,100 
State1,State1_B,8000 
State1,State1_C,75 
State1,State1_D,876 
State1,State1_E,2938 
State2,State2_A,200 
State2,State2_B,16000 
State2,State2_C,75 
State2,State2_D,876 
State2,State2_E,5876 

讓我們設定的指標是STATE_NAME和COUNTY_NAME,並選擇「人口」一欄,所以我們返回multiindexed pandas.Series

df = pd.read_clipboard() # Could have done index_col=[0,1] here 
df = df.set_index(['State_Name','County_Name']) 
s = df.Population 

現在你可以做Series.groupby然後用nlargest (不會在數據框上工作,這就是爲什麼我使用一個系列):

s.groupby(level='State_Name').nlargest(3) 

State_Name State_Name County_Name 
State1  State1  State1_B  8000 
         State1_E  2938 
         State1_D   876 
State2  State2  State2_B  16000 
         State2_E  5876 
         State2_D   876 
Name: Population, dtype: int64