Dataframe Python находит индекс топ-5, затем индексирует в другой столбец - PullRequest
0 голосов
/ 12 мая 2018

У меня есть фрейм данных с двумя числовыми столбцами, A & B. Я хочу найти 5 верхних значений из столбца A и вернуть значения из Col B, хранящиеся в местоположении этих верхних 5.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

nlargest функция на фрейме данных сделает вашу работу, df.nlargest(#of rows,'column_to_sort')

import pandas
df = pd.DataFrame({'A':[1,1,1,2,2,2,2,3,4],'B':[1,2,3,1,2,3,4,1,1]})
df.nlargest(5,'B')
Out[13]: 
    A      B
6   2      4
2   1      3
5   2      3
1   1      2
4   2      2
# if you want only certain column in the output, the use

df.nlargest(5,'B')['A']
0 голосов
/ 12 мая 2018

Я думаю, что нужно DataFrame.nlargest со столбцом A для верхних 5 строк, а затем выберите столбец B:

df = pd.DataFrame({'A':[4,5,26,43,54,36,18,7,8,9],
                   'B':range(10)})

print (df)
    A  B
0   4  0
1   5  1
2  26  2
3  43  3
4  54  4
5  36  5
6  18  6
7   7  7
8   8  8
9   9  9

print (df.nlargest(5, 'A'))
    A  B
4  54  4
3  43  3
5  36  5
2  26  2
6  18  6

a = df.nlargest(5, 'A')['B']
print (a)
4    4
3    3
5    5
2    2
6    6
Name: B, dtype: int64

Альтернативное решение ссортировка:

a = df.sort_values('A', ascending=False)['B'].head(5)
print (a)
4    4
3    3
5    5
2    2
6    6
Name: B, dtype: int64
...