Как найти индекс максимального элемента массива python
Все, что необходимо начинающему и опытному программисту
Поиск максимального элемента массива
Довольно-таки типичная задача для большого количества данных — поиск максимума. Например, в списке успеваемости учеников класса найти самого прилежного. Иначе говоря, требуется выбрать наибольшее значение среднего балла и указать фамилию ученика.
Пример 8.3.
Программа поиска максимального элемента в массиве и его индекса (см. блок-схему, алгоритма на рис. 8.5)
Рис. 8.5. Блок-схема алгоритма поиска максимального элемента массива и его индекса
Заметим, что в процессе поиска максимума не обязательно хранить обе величины — номер максимума и его значение. Достаточно хранить одну, в зависимости от поставленной задачи.
Если индекс максимума не нужно знать, достаточно будет переменной Мах. Если, наоборот, нужен только номер — достаточно Imax.
Тонкость состоит в том, что если нужно найти и то и другое, все равно достаточно найти только Imax, ведь значение максимума легко может быть получено по его индексу (A[Imax]).
Иными словами, нашу программу можно упростить следующим образом:
Пример 8.4.
Программа поиска максимума, не хранящая значение максимума, а запоминающая только его номер
Program Maximum2;
const
N=10;
type
Mas=array [1..N] of integer;
var
A: Mas;
i, imax: integer;
begin
Randomize;
for i:= 1 to N do
begin
A[i]:=-50+Random(101);
write(A[i]:5)
end;
writeln;
< V. Поиск индекса максимального элемента в массиве >
imax:=l;
for i := 2 to N do
if A[imax] < A[i] then
imax:=i;
writeln (‘Максимальный элемент в массиве=’, A[imax]:5);
writeln(‘Его индекс=’,imax:5);
readln
end.
Задание 8.5.
Выполните поиск максимальйого и минимального элемента в массиве за один цикл (блок-схема алгоритма показана на рис. 8.6).
Рис. 8.6. Блок-схема алгоритма поиска индексов максимального и минимального элементов массива за один цикл
Задание 8.6.
В одномерном массиве из 10 элементов определить местоположение минимального элемента. Обнулить элементы, стоящие до него, но не сам этот элемент. (Обнулить — значит записать 0 на место элемента, то есть выполнить A[i] := 0.) Измененный массив вывести на экран.
Задание 8.7.
В одномерном массиве из 10 элементов определить местоположение минимального и максимального элементов. Обнулить элементы, стоящие между ними, а также сами эти элементы.
Массивы
Понятие двумерного массива. Описание типа массива. Формирование значений элементов массива случайным образом
Одним из основных направлений использования компьютеров является накопление и обработка данных — различных таблиц, справочников, словарей и другой информации. Для представления такой информации в программе удобно использовать массивы. Как правило, обработка таких данных осуществляется по одному и тому же закону, для чего удобно использовать циклические алгоритмы. Мы уже рассматривали формирование и обработку одномерных массивов. Вспомним, что в массив мы объединяем конечную последовательность компонентов одного типа и даем им общее имя. Каждый отдельный компонент массива называется элементом. Количество элементов называется размером массива. Тип элементов определяет тип массива. Размер и тип массива указываются при его описании, причем размер может быть указан либо конкретным значением, либо ранее определенной константой. Номер элемента называется индексом. Индексы могут быть целыми положительными константами или целыми переменными. Чтобы обратиться к некоторому элементу массива, нужно рядом с идентификатором массива в скобках указать индекс элемента. Но часто данные могут быть организованы в виде таблицы (матрицы), где расположение каждой переменной определяется номером строки и номером столбца. Например, место в зрительном зале задается указанием номера ряда и номером места в этом ряду. Такие данные удобно описать как двумерный массив. В отличие от одномерного массива каждому элементу двумерного массива соответствует пара индексов. Первый индекс — это номер строки, а второй — номер столбца, где расположен элемент массива. Размер двумерного массива задается парой чисел: M*N, где M — число строк, а N — число столбцов в таблице. Пусть задан двумерный массив Matr, имеющий размер 10*20. Этот массив на языке Паскаль может быть описан следующим образом:
| Var Matr : array [1..10,1..20] of integer; |
тогда Matr[5,7] — элемент, расположенный в 5-ой строке и в 7-ом столбце. Любая константа, переменная, значение функции или выражения в Турбо Паскале характеризуется своим типом. Тип любого из этих объектов определяет множество допустимых значений, которые может иметь объект, а также множество допустимых операций, которые применимы к объекту. Кроме того, тип определяет и формат внутреннего представления значения объекта. Имя, которое программист присваивает своему определяемому типу, — произвольный идентификатор. Объявление типа должно быть сделано в разделе объявлений, и ему должно предшествовать кодовое слово Type. Отличительной особенностью массивов является то обстоятельство, что все их компоненты суть данные одного типа (возможно, структурированного); эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера, например:
| Type Digit = array [0..9] of integer; Matrix = array [1..100, 0..9] of real; Var m : Matrix; d : Digit; i : integer; |
Описание типа массива задается следующим образом: <имя типа>= array [] of ; где:имя>
— правильный идентификатор,
— список из одного или нескольких индексных типов, разделенных запятыми,
— любой тип Турбо Паскаля.
Примечание. Обычно в качестве индексного типа используется тип-диапазон, в котором задаются границы изменения индексов через две точки (..). Так как , идущий за кодовым словом of, — любой тип Турбо Паскаля, он может быть, в частности, другим массивом. Рассмотрим примеры. Пример 1. Массив можно описать как одномерный, элементами которого в свою очередь являются одномерные массивы.
| Const n=2; m=3; Type MyArray1 = array [1..m] of integer; MyArray2 = array [1..n] of MyArray1; Var V : MyArray1; A : MyArray2; |
В данном случае переменная V объявлена как одномерный массив из трех элементов целого типа, а переменная А описана как двумерный массив из двух строк, в каждую из которых включено по три элемента. Пример 2. Описание массива можно сократить, исключив определение массива MyArray1.
| Const n=2; m=3; Type MyArray2 = array [1..n] of array [1..m] of integer; Var A : MyArray2; |
Пример 3. Еще более краткое описание массива А можно получить, указывая имя массива и диапазоны изменения индексов для каждой размерности массива (чем мы уже пользовались).
| Const n=2; m=3; Type MyArray2 = array [1..n, 1..m] of integer; Var A : MyArray2; |
Пример 4. Если же указанный тип используется для определения одного массива в программе, то удобно объявление массива в разделе описания переменных.
| Const n=2; m=3; Var A : array [1..n, 1..m] of integer; |
Формирование значений элементов массива случайным образом и с клавиатуры и вывод их на экран
Операции работы с двумерными массивами аналогичны операциям работы с одномерными массивами, нужно только не забывать о различиях между массивами. Обычно при работе с двумерными массивами используются вложенные циклы. Очень часто значения элементов массива вводятся с клавиатуры. Этот способ задания информации слишком трудоемок при работе с массивами больших размеров. Для отладки широкого класса алгоритмов такой ввод информации должен быть заменен формированием элементов массива случайным образом. Для этого используют встроенные средства Турбо Паскаля: процедуру Randomize и функцию Random. Вы уже сталкивались с этими средствами. Сегодня же наша задача создать процедуру ввода элементов в массив и процедуру вывода элементов на экран. Приведем пример заполнения массива случайными числами. Эта процедура должна принять в качестве входных параметров массив, количество строк и столбцов, заданные пользователем с клавиатуры в основном разделе операторов. Так как наша процедура будет воздействовать на пустой исходный массив, то его мы должны передать по ссылке. Количество строк и столбцов достаточно передать копиями по значению.
| Procedure InsertMas1(Var X : MyArray; n, m: integer); Var i, j : integer; Begin Randomize; for i := 1 to n do for j := 1 to m do X[i, j]:= Random(50); End; |
Теперь, чтобы воспользоваться этой процедурой, достаточно вызвать ее в основном разделе программы, передав ей параметры. Рассмотрим процедуру вывода элементов массива на экран. Для того, чтобы вывести наш массив на экран в виде таблицы, поставим при переходе к новой строке оператор writeln и применим формат вывода элементов (:5).
| Procedure PrintMas(X : MyArray; n, m: integer); Var i, j : integer; Begin for i := 1 to n do begin for j := 1 to m do write(X[i, j]:5); writeln; end; End; |
Задание. Наберите программу-шаблон для работы с двумерными массивами. Как вы уже знаете из предыдущей темы, она должна содержать две процедуры ввода и процедуру вывода элементов заданного массива. Основной раздел операторов должен содержать диалог с пользователем и защиту программы от ввода недопустимых значений для количества строк и столбцов. Сохраните файл в соответствующем каталоге на своей дискете. Рассмотрите процедуру, решающую следующую задачу. Задача. Дана таблица действительных чисел. Сосчитайте сумму всех чисел в таблице.
Обратите внимание, что внутри цикла со счетчиком i организован цикл со счетчиком j. В результате суммируются в начале числа 1-й строки (i=1, при j=1, 2, . m), затем суммируются числа 2-й строки (i=2, при j=1, 2, . m) и т.д. В данной программе в теле одного цикла содержится другой цикл. Такие циклы, как Вы уже знаете, называются вложенными. Причем цикл со счетчиком i является внешним, а цикл со счетчиком j — внутренним. Не забывайте основное правило при написании вложенных циклов: последний оператор внутреннего цикла должен либо предшествовать, либо совпадать с последним оператором внешнего цикла. Вложенные циклы напоминают матрешек, вложенных одна в другую. Задание. Откройте файл программы-шаблона, сохраните его под другим (соответствующем задаче) именем и дополните текст программы функцией нахождения суммы элементов, правильно преобразовав в нее рассмотренную выше процедуру. Внесите в программу необходимые операторы и комментарии. Задание. Ниже приведен фрагмент решения некоторой задачи. Внимательно рассмотрев решение, сформулируйте решаемую задачу и оформите по всем правилам, применив знания текущего занятия.
| . . . for i := 1 to N do Begin M := a[i,1]; S := a[i, 1]; for j := 2 to N do begin if M>a[i, j] Then M := a[i, j]; S := S+a[i, j]; end; writeln (i:7, M:6, S:6:3); End; . . . |
Функция max() в Python, максимальное значение элемента
Находит максимальное значение элемента в последовательности
Синтаксис:
max(iterable, *[, key, default]) max(arg1, arg2, *args[, key])
Параметры:
- iterable — итерируемый объект,
- key — должна быть функцией (принимает один аргумент), используется для порядка сравнения элементов итерируемого объекта. Функция вычисляется один раз,
- default — значение по умолчанию, если итерируемый объект окажется пустым,
- arg1. argN — позиционный аргумент,
- *args — список позиционных аргументов.
Возвращаемое значение:
- наибольшее значение объекта.
Описание:
Функция max() возвращает наибольшее значение элемента итерируемого объекта или самое большое из двух или более переданных позиционных аргументов.
- Если указан один позиционный аргумент, он должен быть итерируемым объектом (список, кортеж, словарь и т.д.).
- Если в функцию передается два или более позиционных аргумента, возвращается самый большой из них.
- В случае, когда максимальное значение имеют сразу несколько аргументов. Возвращает первый по порядку элемент с максимальным значением. Это согласуется с другими инструментами сохранения стабильности сортировки, такими как sorted(iterable, key=keyfunc, reverse=True)[0] и heapq.nlargest(1, iterable, key=keyfunc)
Аргумент key — функция подобная той, которая используется в дополнительном методе списков list.sort() . Функция принимает один аргумент и используется для упорядочивания элементов.
>>> x = ['4', '11', '6', '31'] # функция `max` сравнивает # числа как строки >>> max(x) '6' # функция 'key=lambda i: int(i)' применяется # к каждому элементу списка 'x', преобразуя # строки в тип 'int' и теперь функция `max` # сравнивает элементы списка как числа. >>> max(x, key=lambda i: int(i)) '31' # или другое применение функции 'key' # выбор списка с наибольшей суммой элементов >>> max([1,2,3,4], [3,4,5], key=sum) [3, 4, 5]
Аргумент default по умолчанию указывает объект, который нужно вернуть, если предоставленный итерируемый объект пуст. Если итерация пуста и значение по умолчанию не указано, то возникает ошибка ValueError .
# Значение по умолчанию >>> max([], default=10) 10
При передаче в качестве аргумента текстовых строк, байтовых строк или байтовых массивов, а так же списка символов, максимальное значение будет выбираться исходя из порядка следования символов, в таблице соответствующей кодировки.
>>> x = list('abcdifgh') >>> max(x) # 'i'
Изменено в Python 3.8: Аргумент key может быть None .
Примеры поиска максимального значения в последовательности.
- Нахождение самой длинной строки в списке строк;
- Нахождение максимального значения в списке строк, записанных как целые числа;
- Нахождения максимального значения в строке, которая состоит из чисел и строк;
- Определение индекса у максимального значения в списке;
- Выбор максимального значения для ключа или значения в словаре;
- Нахождение списка с наибольшей суммой элементов в списке списков;
- Нахождение списка с наибольшим количеством элементов в списке списков.
# использование позиционных аргументов >>> max(5, 3, 6, 5, 6) # 6 # использование в качестве аргумента - список >>> max([1.2, 1.3, 1.5, 2, 5.52]) # 5.52 # комбинирование позиционных аргументов и списка # при передаче списка 'x' происходит его распаковка >>> x = (1.2, 1.3, 1.5, 2, 5.52) >>> max(5, 3, 5, *x) # 5,52
Нахождение самой длинной строки в списке строк.
Найдем самую длинную строку. В качестве ключевой функции используем len() . Она посчитает количество символов в строке каждого элемента списка строк, а функция max() выберет максимальное число. Строки можно передать например как позиционные аргументы, так и списком [‘Jul’, ‘John’, ‘Vicky’] , результат будет тот же.
>>> line = ['Jul', 'John', 'Vicky'] >>> max(line, key=len) # 'Vicky'
Нахождение max() в списке строк, записанных как целые числа.
Есть список строк чисел и необходимо найти максимум, как если бы они были целыми числами? Если применить функцию max() к исходному списку «как есть», то она выберет наибольшее значение списка исходя из лексикографической сортировки. Для нахождения максимума, как числа, применим функцию lambda i: int(i) в качестве ключа key , которая «на лету» преобразует элементы списка в целые числа, тогда функция max() выберет то что нам нужно.
>>> x = ['4', '11', '6', '31'] >>> max(x) # '6' >>> max(x, key = lambda i: int(i)) # '31'
Нахождения max() в строке, которая состоит из чисел и строк.
Что бы найти максимум в строке, которая состоит из чисел и строк, необходимо сначала разделить исходную строку на список подстрок. Используем приемы, описанные в примерах функции sum() :
- по разделителю, например пробелу ‘ ‘ или ‘;’ методом строки str.split() ,
- вытащить все цифры из исходной строки при помощи функцией re.findall() .
Затем в цикле перебрать полученный список и все строки с цифрами преобразовать в соответствующие числовые типы и уже потом применить функцию
# исходная строка >>> line = '12; 12,5; 14; один; 15.6; два' # способы преобразования строки в список строк # 1 способ по разделителю ';' >>> line.split(';') # ['12', ' 12,5', ' 14', ' один', ' 15.6', ' два'] # 2 способ по регулярному выражению >>> import re >>> match = re.findall(r'[\d\. ]+', line) >>> list(match) # ['12', '12,5', '14', '15.6']
Далее будем работать с более сложным списком, полученным 1 способом, где встречаются слова. И так, имеем список строк с цифрами и другими строками. Стоит задача: преобразовать строки с цифрами в соответствующие числовые типы и отбросить строки со словами, что бы потом найти максимум.
Задача усложняется тем, что вещественные числа в строках записаны как через запятую, так и через точку. Для необходимых проверок и преобразований определим функцию str_to_num() .
>>> def str_to_num(str, chars=['.', ',']): . # убираем начальные и конечные пробелы . str = str.strip() . if (any(char in str for char in chars) and . str.replace('.', '').replace(',', '').isdigit()): . # если в строке есть точка или запятая и при их замене на '' . # строка состоит только из цифр то это тип float . return float(str.replace(',', '.')) . elif str.isdigit(): . # если строка состоит только из цифр то это тип int . return int(str) # полученный список строк 1-м способом >>> str_list = ['12', ' 12,5', ' 14', ' один', ' 15.6', ' два'] # новый список чисел, где будем искать максимум >>> num_list = [] >>> for i in str_list: . # применим функцию преобразования строки в число . n = str_to_num(i) . if n is not None: . # если функция возвращает число, . # то добавляем в новый список . num_list.append(str_to_num(i)) >>> num_list # [12, 12.5, 14, 15.6] >>> max(num_list) # 15.6
Определение индекса у максимального значения в списке.
Допустим есть список чисел и стоит задача, определить индекс максимального значения в этом списке. Для решения этой задачи необходимо пронумеровать список, т.е. создать кортеж — индекс/число, а затем найти максимум, используя в качестве ключа key=lambda i : i[1] .
>>> lst = [1, 5, 3, 6, 9, 7] # пронумеруем список >>> lst_num = list(enumerate(lst, 0)) >>> lst_num # [(0, 1), (1, 5), (2, 3), (3, 6), (4, 9), (5, 7)] # найдем максимум (из второго значения кортежей) >>> t_max = max(lst_num, key=lambda i : i[1]) >>> t_max # (4, 9) # индекс максимального значения >>> t_max[0] # 4
Нахождение max() для ключа или значения в словаре dict .
Допустим есть словарь, задача: найти максимальное значение ключа или самого значения ключа и вывести эту пару.
# имеем словарь >>> d = 1: 3, 2: 4, 1: 9, 4: 1> # преобразуем его в список отображение >>> key_val = d.items() # преобразуем отображение в список # кортежей (ключ, значение) >>> key_val_list = list(key_val) # [(1, 9), (2, 4), (4, 1)]
По умолчанию, при нахождении максимального элемента из списка кортежей будет выбираться кортеж, у которого наибольшее значение имеет ключ исходного словаря (первый элемент в кортеже).
Но если необходимо получить пару (key, value) , у которого наибольшее значение имеет значение ключа (второй элемент), то для этого нужно применить лямбда-функцию lambda i : i[1] в качестве аргумента key функции max() , которая укажет, из какого элемента кортежа выбирать наибольшее значение.
# происходит сравнение по # первым элементам кортежа >>> kv = max(key_val_list) >>> kv # (4, 1) # максимальное значение ключа в словаре >>> kv[0] # 4 # меняем порядок сравнения >>> kv = max(key_val_list, key=lambda i : i[1]) >>> kv # (1, 9) # максимальное значение в словаре >>> kv[1] # 9 # ключ этого значения в словаре >>> kv[0] # 1 # получаем максимальное значение из словаря >>> d[kv[0]] # 9
Нахождение списка с наибольшей суммой элементов в списке списков.
Для выполнения данной задачи, используем функцию max() , а в качестве ключевой функции применим встроенную функцию sum() .
# исходный список >>> lst = [[1, 2, 3], [4, 5], [1, 3, 4, 5], [10, 20]] # выбираем список с наибольшей суммой элементов >>> max(lst, key=sum) # [10, 20]
Выбор списка с наибольшим количеством элементов из списка списков.
Для выполнения данной задачи, используем функцию max() , а в качестве ключевой функции применим встроенную функцию len() .
# исходный список >>> lst = [[1, 2, 3], [4, 5], [1, 3, 4, 5], [10, 20]] # выбираем список с наибольшим количеством элементов >>> max(lst, key=len) # [1, 3, 4, 5]
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
Как использовать функцию idxmax() в Pandas (с примерами)
Вы можете использовать функцию pandas.DataFrame.idxmax() , чтобы вернуть индекс максимального значения по указанной оси в кадре данных pandas.
Эта функция использует следующий синтаксис:
DataFrame.idxmax (ось = 0, скипна = Истина)
- axis : Используемая ось (0 = строки, 1 = столбцы). По умолчанию 0.
- skipna : следует ли исключать значения NA или null. Значение по умолчанию — Истина.
В следующих примерах показано, как использовать эту функцию на практике со следующими пандами DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame(, index=['Andy','Bob', 'Chad', 'Dan', 'Eric', 'Frank']) #view DataFrame df points assists rebounds Andy 25 5 11 Bob 12 7 8 Chad 15 7 11 Dan 8 9 6 Eric 9 12 6 Frank 23 9 5
Пример 1: найти индекс с максимальным значением для каждого столбца
В следующем коде показано, как найти индекс с максимальным значением для каждого столбца:
#find index that has max value for each column df.idxmax (axis= 0 ) points Andy assists Eric rebounds Andy dtype: object
Из вывода мы видим:
- Игрок с наибольшим значением в столбце очков — Энди.
- Игрок с самым высоким значением в колонке передач — Эрик.
- Игрок с наибольшим значением в столбце подборов — Энди.
Важно отметить, что функция idxmax() вернет первое вхождение максимального значения.
Например, обратите внимание, что у Энди и Чеда было по 11 подборов. Поскольку Энди появляется первым в DataFrame, возвращается его имя.
Пример 2: найти столбец с максимальным значением для каждой строки
В следующем коде показано, как найти столбец с максимальным значением для каждой строки:
#find column that has max value for each row df.idxmax (axis= 1 ) Andy points Bob points Chad points Dan assists Eric assists Frank points dtype: object
Из вывода мы видим:
- Наибольшее значение в строке с надписью «Энди» можно найти в столбце очков .
- Наибольшее значение в строке с надписью «Боб» можно найти в столбце очков .
- Наибольшее значение в строке с надписью «Чад» можно найти в столбце очков .
- Самое высокое значение в строке с надписью «Дэн» можно найти в столбце передач .
- Наибольшее значение в строке с надписью «Эрик» можно найти в столбце передач .
- Наибольшее значение в строке с надписью «Энди» можно найти в столбце очков .
Обратитесь к документации pandas за полным объяснением функции idxmax().