返回未包含在groupby中的列的值

时间:2017-02-15 17:43:42

标签: pandas

我有这样的df:

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

我希望找到R2内分组的两个最小的Var值,看看他们的ID是什么。

我正在使用此代码:

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

它为我提供了一个数据帧,每个组中有两个最小的R2,但我想知道他们的ID是什么。

1 个答案:

答案 0 :(得分: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