Получить минимальное значение индекса в столбце, когда строка - Pandas Датафрейм - PullRequest
3 голосов
/ 19 февраля 2020

Я провел некоторое исследование по этому вопросу, но не смог найти краткий метод, когда индекс имеет тип 'string'.

Учитывая следующий Pandas фрейм данных:

Platform | Action |    RPG    | Fighting
----------------------------------------
PC       |   4    |      6    |     9
Playstat |   6    |      7    |     5
Xbox     |   9    |      4    |     6
Wii      |   8    |      8    |     7

Я пытался получить индекс (Платформа) наименьшего значения в столбце «RPG», который возвращал бы «Xbox». Мне удалось заставить это работать, но это не эффективно, и я искал лучший / более быстрый / сжатый подход. Вот что я получил:

# Return the minimum value of a series of all columns values for RPG
series1 = min(ign_data.loc['RPG'])

# Find the lowest value in the series
minim = min(ign_data.loc['RPG'])

# Get the index of that value using boolean indexing
result = series1[series1 == minim].index

# Format that index to a list, and return the first (and only) element
str_result = result.format()[0]

1 Ответ

5 голосов
/ 19 февраля 2020

Используйте Series.idxmin:

df.set_index('Platform')['RPG'].idxmin()
#'Xbox'

или то, что @Quang Hoang предлагает в комментариях

df.loc[df['RPG'].idxmin(), 'Platform']

если Platform уже индекс:

df['RPG'].idxmin()

РЕДАКТИРОВАТЬ

df.set_index('Platform').loc['Playstat'].idxmin()
#'Fighting'

df.set_index('Platform').idxmin(axis=1)['Playstat']
#'Fighting'

, если уже индекс:

df.loc['Playstat'].idxmin()
...