rstJkee
@rstJkee

Отсортировать list со второго подмассива по последующие?

У меня есть csv файл, в котором первая строка является шапкой (название объекта, сколько объектов и всё в этом духе). Считал файл с file = csv.reader(csvfile, delimiter=";"), теперь надо отсортировать его по определённым параметрам. Вообще, это всё через лямбда функции делается, но мне интересно как. Я знаю, что можно сделать так data.sort(key=lambda item: item[3]) и он отсортируется по числу (3 колонка - количество на складе). Но мне надо отсортировать лист без шапки (то есть начиная с первого подмассива, а не с нулевого) и сортировать по нескольким критериям: где остаток на складе больший и возвращено товара как можно меньше (то есть первый параметр реверсивно сортируется, а второй обычно)
Вот функция
def sort_csv_data(data):
    data.sort(key=lambda item: item[3])

Буду рад любой помощи и теории по лямбда и сортировке. Также, если будут варианты с компоратором, то с удовольствием прочитаю
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
@PavelMos
Без шапки значит без нулевой строки
data[1:].sort........
только шапку потом придётся обратно приделывать

но проще всего через pandas сделать
import pandas as pd
p1=pd.read_csv('c:\\work\\csv1.csv', sep=';') #кодировка по умолчанию utf8, названия столбцов в  строке 0
p1.sort_values(by=['col1','col2','col3'], ascending=False) #можно задавать несколько столбцов, но вверх или вниз применяется только ко всем вместе, т.е. для того, чтобы было в разные стороны, нужно будет 2 раза сортировку делать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы