Нахождение индексов N максимальных значений по оси в Pandas - PullRequest
3 голосов
/ 12 апреля 2019

Я знаю, что существует метод .argmax (), который возвращает индексы максимальных значений по оси.

Но что, если мы хотим получить индексы 10 самых высоких значений по оси?

Как это можно сделать?

Например:

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

Ответы [ 3 ]

0 голосов
/ 12 апреля 2019

Вы можете использовать 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
0 голосов
/ 12 апреля 2019

Дайте это попробовать.Это возьмет 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:])
0 голосов
/ 12 апреля 2019

IIUC, скажем, если вы хотите получить индекс 10 самых больших чисел столбца col:

data[col].nlargest(10).index
...