Когда я пытаюсь отсортировать столбец в CSV-файле, который содержит числовые данные, он не сортируется так, как я ожидаю - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь написать программу, которая спрашивает пользователя, по какому столбцу в CSV-файле он хочет отсортировать, и генерирует новый CSV-файл, отсортированный по запрошенному столбцу, причем некоторые столбцы содержат строки, а другие содержат целые числа, а другиепоплавки.Когда я пытаюсь сортировать по столбцам, которые содержат целые числа или числа с плавающей точкой, это происходит не так, как мне бы хотелось.Это похоже на сортировку чисел «по алфавиту», если это имеет смысл.

Короче, у меня возникают проблемы при попытке правильно отсортировать числовые столбцы.

Я пытаюсь только импортироватьмодуль csv.

import csv


user_input = input("What would you like to sort by? (Country,Name, GDPPC, Literacy, InfantMortality, Agriculture, Population, NetMigration)")


with open('Countries.csv', 'r', newline='') as input_file:
    csv_input = csv.DictReader(input_file)
    data = sorted(csv_input,reverse=True, key=lambda row: (row[user_input]))

with open('Countries_Sorted.csv', 'w') as output_file:
    csv_output = csv.DictWriter(output_file, fieldnames=csv_input.fieldnames)
    csv_output.writeheader()
    csv_output.writerows(data)


with open('Countries_Sorted.csv', 'r') as final_file:
    for line in final_file:
        print(line)

Если я попытаюсь отсортировать, например, по населению, я получу что-то вроде этого ...

Population
99390000
9845000
9799000
9651000
9513000
92900
91700000
9157000
91510000
892145

Когда это должно сгенерировать что-то вроде этого...

Population
1371000000
1311000000
321400000
257600000
207800000
188900000
182200000
161000000
144100000
127000000

1 Ответ

1 голос
/ 05 мая 2019

Согласно https://docs.python.org/3/library/csv.html в csv.reader, когда он анализирует ваш файл, я верю, что он возвращает строковые объекты, поэтому ваши числа фактически представляются в виде строк при их сортировке.Сначала вам нужно привести их к целым числам / числам с плавающей точкой, чтобы отсортировать их по числам.

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