我有一个数据框
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
?任何帮助将不胜感激。谢谢!
你可以找到每组最小度量的索引,然后
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
(愿预测有趣!)
如何按指标值排序并删除重复项,保留最小的一个,就像这样。
df.sort_values("metrics").drop_duplicates(['region'], keep='first')
df.groupby("region").agg({'metrics':['min']})