#python #csv #pandas #export-to-excel
#python #csv #панды #экспорт в excel
Вопрос:
Я пытаюсь прочитать CSV как фрейм данных, затем отсортировать по столбцу и впоследствии вывести отсортированный фрейм данных в новый CSV. Однако проблема в том, что мой выходной CSV не похож на отсортированный фрейм данных с данными, перемещаемыми в неправильные столбцы и т. Д. И т. Д. Я подозреваю, что проблема связана с данными, поскольку некоторые столбцы состоят из длинных строк и могут содержать специальные символы — это потому, что, когда я удалил определенные столбцы, шаги, которые я предпринял ниже, работают. Я попытался экспортировать и повторно импортировать dataframe как в формате dictionary, так и в формате pickle, и он работает отлично.
Сначала я читаю в файле CSV, а затем сортирую по столбцу (файлы csv, которые я использовал, можно загрузить в комментарии ниже (размер <100 КБ)
df = pd.read_csv("database.csv",encoding = "ISO-8859-1")
sorteddf = df.sort_values(by="All Comment Score")
Это показывает, как выглядит фрейм данных после сортировки (что я хочу)
Затем я сохраняю свой фрейм данных в новом файле CSV и считываю этот новый CSV как новый фрейм данных:
sorteddf.to_csv("test.csv")
newdf = pd.read_csv("test.csv",encoding = "ISO-8859-1")
Однако, когда я читаю недавно выведенный CSV-файл как новый фрейм данных, столбцы и данные выглядят беспорядочно:
Это показывает, как на самом деле выглядит фрейм данных, импортированный из выходного CSV
Я был бы очень признателен, если бы кто-нибудь мог пролить свет на мою проблему и указать мне правильное направление!
Комментарии:
1. Исходный CSV и выданный CSV-файл можно найти по адресу filedropper.com/files_10 (очень маленький размер файла, менее 100 КБ) Я должен опубликовать его здесь, потому что у меня меньше 10 очков репутации!
Ответ №1:
Вы говорите о неназванном столбце?
Попробуйте использовать
это, чтобы pandas не выводил встроенный индексный столбец (большую часть времени вас это не волнует)
sorteddf.to_csv('test.csv', index=False)
Комментарии:
1. Привет! Спасибо, что нашли время ответить мне. Я попробовал ваш метод, и перезагруженный фрейм данных выглядит следующим образом. Однако, если вы посмотрите на индекс 8, в столбце «автор» вместо того, чтобы показывать мне имя автора, вместо этого там есть гипертекстовая ссылка, другой пример будет в разделе «Оценка текущего комментария», строка 8 показывает мне название продукта.
2. Мое лучшее предположение о том, что происходит, заключается в том, что при записи фрейма данных в файл CSV … некоторые текстовые строки разбиваются на дополнительные столбцы, таким образом перемещая все последующие данные «на один столбец» вправо
Ответ №2:
У вас проблемы с декодированием / кодированием. Ваша кодировка не в «ISO», а в «latin-1». Это трудно исправить, если вы не выясните, почему вы читаете в своих данных таким образом.
Комментарии:
1. Привет! Спасибо, что нашли время ответить мне. Я на 100% уверен, что эти строки не существуют в исходном фрейме данных, потому что я визуально проверил данные в Excel (это всего 50 или около того строк) и потому, что данные были собраны с помощью короткого скрипта python, который я написал. Если вы не возражаете, вы можете попробовать загрузить файл, который я использовал в filedropper.com/files_10 (<100 кб). В исходном CSV вы можете видеть, что данные хорошо совпадают с их столбцами. Но после сортировки и записи в CSV вы можете видеть, что данные больше не совпадают с их столбцами.
2. У вас проблемы с декодированием / кодированием. Ваша кодировка не в «ISO», а в «latin-1». Это трудно исправить, если вы не выясните, почему вы читаете свои данные таким образом.
3. Привет, спасибо, что указали мне правильное направление! Мне удалось исправить свой скрипт и прочитать csv как utf-8, и теперь все отлично работает!
4. Потрясающе. Я обновил свой ответ на случай, если другие люди столкнутся с этой проблемой. Обязательно проголосуйте за принятый ответ.