2017-02-15 77 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

谢谢,第一个选项是更直观和更清洁的我,但很高兴知道关于第二个作为好 –