Как сортировать список строк как числа?
Есть список студентов и их средний балл, каждого студента, нужно отсортировать список по среднему баллу, но, когда я сортирую числа - string, и получается, что 100 меньше, чем 20 и т. д.
file = open('Group1.csv','r')
next(file)
csv1=csv.reader(file,delimiter=',')
sort = sorted(csv1,key=operator.itemgetter(1))
for line in sort:
print(line)
вот данные файла:
name,mark
Igor,74
Anton,75
Victor,66
A,100
Как сделать так, чтобы оно правильно сортировало и рядом с оценкой выводило и имя?
Ответы (2 шт):
Конвертировать строку в число с помощью функции int:
key=int(operator.itemgetter(1))
Попробуйте использовать pandas. Это классическая библиотека для работы с данными, особенно с таблицами.
import pandas as pd
df = pd.read_csv('Group1.csv', sep=',')
df = df.sort__values('mark')
df.head()
Установка pandas очень проста:
pip install pandas
После этого Вы сможете выполнить тот код, который я привёл. Плюсы pandas в том, что он умеет работать с большим количеством данных. Например, если в столбце есть числа и только они, pandas сразу преобразует их числам. Если же есть пропущенные значения или строки, тогда pandas преобразует их к самому широкому типу. Например, к строкам.