Метод idxmax
Метод idxmax применяется к DataFrame
и возвращает индекс (метку строки или столбца) с максимальным значением.
Первым параметром можно задать ось axis: 0 для поиска по столбцам (индексы строк),
1 для поиска по строкам (индексы столбцов).
По умолчанию axis=0. Если несколько максимумов, возвращается первый.
Для пропущенных значений (NaN) по умолчанию они игнорируются.
Синтаксис
df.idxmax(axis=0, skipna=True)
Пример
Найдём индексы строк, в которых находятся максимальные значения в каждом столбце таблицы:
import pandas as pd
df = pd.DataFrame({
'a': [1, 5, 3, 4, 2],
'b': [10, 20, 30, 40, 50]
})
res = df.idxmax()
print(res)
Результат выполнения кода:
a 1
b 4
dtype: int64
Пример
Теперь найдём индексы столбцов, где находятся максимальные значения
в каждой строке. Для этого укажем axis=1:
import pandas as pd
df = pd.DataFrame({
'a': [1, 5, 3],
'b': [4, 2, 6]
})
res = df.idxmax(axis=1)
print(res)
Результат выполнения кода:
0 b
1 a
2 b
dtype: object
Пример
При работе с пропущенными значениями метод по умолчанию их игнорирует:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, 3],
'b': [np.nan, 5, 2]
})
res = df.idxmax()
print(res)
Результат выполнения кода:
a 2
b 1
dtype: int64
Пример
Если пропуски нужно учитывать, укажем skipna=False.
Тогда результат будет NaN, если в колонке есть пропуски:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, 3],
'b': [np.nan, 5, 2]
})
res = df.idxmax(skipna=False)
print(res)
Результат выполнения кода:
a NaN
b NaN
dtype: float64