Как открыть файл csv с кадром данных pandas

130
14

Существует файл формата CSV с тремя столбцами данных. Третья колонка имеет длинный текст. Это сообщение об ошибке произошло, когда я попытался открыть файл, используя pandas.read_csv

message : UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 0: invalid start byte.

Но нет проблем с открытием файла с

with open('file.csv', 'r', encoding='utf-8', errors = "ignore") as csvfile:

Я не знаю, как преобразовать эти данные в dataframe, и я не думаю, что pandas.read_csv обрабатывает эту ошибку.

Итак, как я могу открыть этот файл и получить dataframe?

спросил(а) 2018-01-22T16:59:00+03:00 2 года, 10 месяцев назад
1
Решение
72

Попробуй это:

Откройте файл cvs в текстовом редакторе и обязательно сохраните его в формате utf-8.

Затем прочитайте файл как обычно:

import pandas
csvfile = pandas.read_csv('file.csv', encoding='utf-8')

ответил(а) 2018-01-22T18:12:00+03:00 2 года, 10 месяцев назад
42

Вы можете попробовать другой вариант для кодирования как "ISO-8859-1"

В твоем случае:

with open('file.csv', 'r', encoding = 'ISO-8859-1', errors = "ignore") as csvfile:

или попробуйте это:

import pandas as pd
data_file = pd.read_csv("file.csv", encoding = "ISO-8859-1")
print(data_file)

ответил(а) 2019-04-15T13:25:00+03:00 1 год, 7 месяцев назад
42

Я бы попытался использовать встроенный csv-ридер, а затем поместил данные в панды.

import csv
with open('eggs.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
print(', '.join(row))

Если это не сработает, то, по крайней мере, вы можете подтвердить, что это проблема csv, а не проблема pandas, задыхающаяся от кодировок.

Другая рекомендация состоит в том, чтобы убедиться, что вы используете Python 3.x, который обрабатывает проблемы с кодировкой намного лучше, чем 2.7.

Если вы можете предоставить свой образец, я могу проверить его самостоятельно и соответствующим образом обновить свой ответ.

ответил(а) 2018-01-22T19:20:00+03:00 2 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема