Непонятная ошибка read_table в пандах

Я пытаюсь прочитать набор данных семян с помощью панд. При загрузке файла используется:

df = pd.read_table("seeds_dataset.txt", header=None) 

Я получил:

CParserError: Error tokenizing data. C error: Expected 8 fields in line 8, saw 10

Теперь, чтобы загрузить файл в Excel, мне нужно было одновременно указывать табуляцию и пробел в качестве разделителей, чтобы правильно прочитать файл в этой строке 8, чего нельзя сделать с помощью панд (насколько я знаю). Sublime Text читает файл точно напрямую.

Я не хочу пропустить плохие строки с error_bad_lines так как с ними все в порядке. Я также использовал lineterminator без успеха.

1 ответ

Решение

Попробуйте опцию "delim_whitespace".

df = pd.read_table("seeds_dataset.txt", header=None, delim_whitespace = True) 

РЕДАКТИРОВАТЬ: более подробное объяснение:

Подпись метода для read_table здесь У него есть все виды опций, один из которых sep, Это определяет разделитель между полями, и его значение по умолчанию - "\t" (вкладка). Одним из решений является изменение sep аргумент. Реализация синтаксического анализатора pandas на python позволяет вам использовать разделители регулярных выражений, поэтому sep = "\\s+" будет ограничивать любое количество пробелов. Однако синтаксический анализатор C (который выглядит так, как будто вы используете из сообщения об ошибке) не позволяет использовать регулярные выражения. Это имеет delim_whitespace Вариант, который точно соответствует вашим потребностям!

Другие вопросы по тегам