使用pandas groupby 获取对应于最小值的行

S.G*_*.Gu 5 python group-by dataframe pandas pandas-groupby

我有一张表需要按条件分组:

R_num ORG name level
13    Dm   Ad   17
13    Dm   Af   16
Run Code Online (Sandbox Code Playgroud)

当我使用它给我时13 Dm Ad 16,就像数据被操纵一样。

df1=df.reset_index().groupby(['R_num','ORG']).agg({'name':'first','level':['min']})
Run Code Online (Sandbox Code Playgroud)

我想要的结果是13 Dm Af 16,我知道可能有问题,'name':'first'但我该如何解决这个问题?

谢谢

cs9*_*s95 5

IIUC,您应该使用groupbyidxmin

# df.loc[df.groupby(['R_num','ORG'])['level'].agg('idxmin')]
df.loc[df.groupby(['R_num','ORG'])['level'].idxmin()]

   R_num ORG name  level
1     13  Dm   Af     16
Run Code Online (Sandbox Code Playgroud)