Pandas groupby 获取另一列最小的列的值

问题描述 投票:0回答:3

我有一个数据框

df
,如下所示:

地区 型号 指标
东京 阿里玛 0.1
东京 前馈 0.2
东京 深AR 0.3
大阪 阿里玛 0.5
大阪 前馈 0.2
大阪 深AR 0.1

我想按

region
进行分组,并返回每组中
metrics
的最小值,以及
model
最小的
metrics
值。

预期结果:

地区 型号 指标
东京 阿里玛 0.1
大阪 深AR 0.1

我尝试像下面那样做,但我不确定如何完成它:

df.groupby("region").agg({'metrics':'min', ####... })

也许可以使用

argmin
?任何帮助将不胜感激。谢谢!

python pandas group-by
3个回答
3
投票

你可以找到每组最小度量的索引,然后

loc
将其带入原始框架:

# not sorting to keep the original order of appearance of regions
min_inds = df.groupby("region", sort=False).metrics.idxmin()
result = df.loc[min_inds]

获得

>>> result

  region   model  metrics
0  Tokyo   ARIMA      0.1
5  Osaka  DeepAR      0.1

(愿预测有趣!)


2
投票

如何按指标值排序并删除重复项,保留最小的一个,就像这样。

df.sort_values("metrics").drop_duplicates(['region'], keep='first')

0
投票
df.groupby("region").agg({'metrics':['min']})
© www.soinside.com 2019 - 2024. All rights reserved.