Как преобразовать файл CSV в список для числовой сортировки - PullRequest
0 голосов
/ 10 июля 2020

введите здесь описание изображения У меня есть файл .csv, созданный из сценария python, в котором хранится оценка (целое число) и имя, которое является строкой, есть ли способ отсортировать это численно, как только преобразовать в список? Я также не могу отсортировать элементы, прежде чем они go попадут в файл csv, поскольку мне нужно, чтобы в файле csv были уже существующие значения, чтобы я мог выводить их в порядке убывания. Как показано на рисунке, я пробовал использовать функцию карты, но в ней говорится, что это должно быть целое число, а не список. Код + сообщение об ошибке

Ответы [ 3 ]

0 голосов
/ 10 июля 2020

Я могу дать вам что-то вроде этого:

Созданный мной файл:

1,hello
12,idontknow
33,foo
3,bar
0,fooo
7,baaar

А вот код:

import csv

def csv_sort(file_path):
    opened_file = open(file_path, 'r')
    data = list(csv.reader(opened_file, delimiter = ','))
    return sorted(data, key = lambda x: int(x[0]))
        
if __name__ == '__main__':
    results = csv_sort('path_to_your_file')
    print(results)

Результат:

[['0', 'fooo'], ['1', 'hello'], ['3', 'bar'], ['7', 'baaar'], ['12', 'idontknow'], ['33', 'foo']]
0 голосов
/ 10 июля 2020

Вы пытаетесь сопоставить int () со списком "scores" вместо элемента, который хотите преобразовать в int.

изменить

scores = list(map(int, scores))

list.sort(scores, , reverse=True)

на:

scores = list(map(lambda l:[int(l[0]), l[1]], scores)
list.sort(scores, key=lambda l:l[0], reverse=True)

, и он должен работать.

Кроме того, l oop, который создает «оценки», не нужен, потому что вы уже преобразовали csv в список в строке:

csv = list(csv.reader(open("HighScores.csv")))

Просто измените имя переменной с 'csv' на 'scores', и вы можете удалить l oop.

0 голосов
/ 10 июля 2020

Я рекомендую использовать библиотеку Pandas для игры с вашим csv. pandas .read_csv () прочитает ваш CSV-файл, а затем вы можете использовать функцию sort_values ​​(by = 'name of the column') для сортировки набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...