如何获取列中多个最小值的索引?

Posted

技术标签:

【中文标题】如何获取列中多个最小值的索引?【英文标题】:How to get the index of multiple mininum values in a column? 【发布时间】:2021-10-28 08:39:53 【问题描述】:

我正在尝试获取数据框中每列的 k 个最小值。但是我无法获得索引。 我有一个数据框,其中包含名为 ddist 的数据之间的距离。我想在每列中选择 k 个最小元素并列出第一个。每个元素所在的行数,因此我可以稍后将其用于 KNN。

这些是我尝试获取索引的行,但是我得到了一个包含索引和值的列表,并且无法单独访问索引。

list_min = []
for column in ddist:
    idx = ddist.nsmallest(k,column)
    idx=idx[0]
    list_min.append(idx)
list_min

输出如下所示

[43     0.0
 188    0.0
 202    0.0
 Name: 0, dtype: float64,
 21    0.04
 26    0.04
 94    0.04
 Name: 0, dtype: float64,
 27     0.39
 52     0.39
 164    0.39
 Name: 0, dtype: float64,
 33     0.01
 131    0.01
 210    0.01
...

但我只想获得看起来像每个条目上的列的整数。

【问题讨论】:

【参考方案1】:

你应该试试pd.Series.index:

list_min = []
for column in ddist:
    idx = ddist.nsmallest(k,column)
    idx=idx[0]
    list_min.append(idx.index.tolist())
list_min

【讨论】:

谢谢!这有很大帮助,但是我仍然无法仅访问整数,因为输出如下所示: [Int64Index([43, 188, 202], dtype='int64'), Int64Index([21, 26, 94], dtype='int64'), Int64Index([27, 52, 164], dtype='int64'), Int64Index([33, 131, 210], dtype='int64'), Int64Index([59, 82, 88] , dtype='int64'), Int64Index([2, 13, 24], dtype='int64'), ... @ReginaBriseño 已编辑我的答案现在应该可以使用,如果可行,请接受并投票

以上是关于如何获取列中多个最小值的索引?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不包括特定值的数据框中获取最小时间值

如何根据两个逗号分隔值的列中的任何一个值获取记录

确定数组中 N 个非零最小值的索引

如何获取列中每个不同值的计数? [复制]

如何获取列中最频繁值的数量?

如何获取列中每个值的计数?