Сортировка CSV по числовому столбцу для вывода top 5

#csv

#csv

Вопрос:

Привет, я пытаюсь отсортировать CSV-файл после его записи, чтобы я мог отобразить 5 лучших результатов (победитель). Я могу распечатать первые 5, но они не являются самыми высокими оценками.

 def main():
    setup()
    print('Player 1 log in:')
    user1 = login()
    print('Player 2 log in: ')
    setup()
    user2 = login()
    print(user1, 'vs', user2)
    (player1, player1_win), (player2, player2_win) = game(user1, user2)
    if player1_win:
        winner = (user1, player1)
    else:
        winner = (user2, player2)
    print('Well done,', winner[0],' you won with ', winner[1], ' Points')
    with open('Leaderboard.csv', 'a', newline='') as file:  
        wr = csv.writer(file)
        wr.writerow((winner))
    with open('Leaderboard.csv', 'r', newline='') as file:
        score_list = list(csv.reader(file))
        print('n', 'The top five players are: ', 'n')
        for row in islice(score_list, 5):
            print(*row)
            file.close()
  

Комментарии:

1. Просто покажите содержимое вашего 'Leaderboard.csv' . Все остальное не имеет значения для вашего вопроса.

Ответ №1:

При работе с CSV-файлами гораздо проще использовать pandas

 import pandas as pd
board = pd.read_csv("Leaderboard.csv")
board.sort_values(by="Score").head()
  

Я настоятельно рекомендую вам ознакомиться с учебным пособием сообщества:
учебное пособие pandas (изменение макета таблицы)

Комментарии:

1. Спасибо, я проверю panda. Я использовал следующее, и, похоже, это сработало. Может ли panda потенциально сократить мои строки кода? ` score_list = список (csv.reader(файл)) сортировка = сортировка (score_list,ключ =operator.itemgetter(1), обратный = True)

2. Да, в моем случае panda значительно сократила мою кодовую базу