在 Pandas 中查找轴上 N 个最大值的索引

Finding the indexes of the N maximum values across an axis in Pandas

我知道有一种方法 .argmax() returns 轴上最大值的索引。

但是,如果我们想要获取轴上 10 个最高值的索引怎么办?

这是如何实现的?

例如:

data = pd.DataFrame(np.random.random_sample((50, 40)))

IIUC,比方说,如果你想获得前 10 个最大列数的索引 col:

data[col].nlargest(10).index

您可以使用 argsort:

s = pd.Series(np.random.permutation(30))
sorted_indices = s.argsort()
top_10 = sorted_indices[sorted_indices < 10]
print(top_10)

输出:

3     9
4     1
6     0
8     7
13    4
14    2
15    3
19    8
20    5
24    6
dtype: int64

试一试。这将获取一行中的 10 个最大值并将它们放入数据框中。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.random_sample((50, 40)))
df2 = pd.DataFrame(np.sort(df.values)[:,-10:])