2017-02-15 74 views
0

我有一個DF像這樣:從列返回值不包含在GROUPBY

ID R2  Var 
1 0.2 GDD 
2 0.3 GDD 
3 0.9 GDD 
1 0.5 PRCP 
2 0.1 PRCP 
3 0.8 PRCP 

,我想找到內Var分爲兩個最小R2價值觀和看到他們ID是什麼。

我使用這個代碼:

df.groupby(['Var'])['R2'].nsmallest(2).reset_index() 

這給了我,每組兩個最小R2一個數據幀,但我想知道他們的ID是什麼爲好。

回答

1

設置ID爲執行分組之前的索引軸:

df.set_index('ID').groupby('Var')['R2'].nsmallest(2).reset_index() 

enter image description here


通知分組後產生的多指數系列level=1給你的順序,其中索引軸出現。因此,使用這些知識,你也reindex可以根據這些數值,如圖所示:

df.reindex(df.groupby('Var')['R2'].nsmallest(2).index.get_level_values(1) 
     ).reset_index(drop=True) 

enter image description here

+1

謝謝,第一個選項是更直觀和更清潔的我,但很高興知道關於第二個作爲好 –