#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 значительно сократила мою кодовую базу