2016-11-05 4 views
0

Я пытаюсь прочитать seeds dataset с помощью панд. При загрузке файла с помощью:Запутать ошибку read_table в pandas

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 без успеха.

ответ

0

попробуйте вариант «delim_whitespace».

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

EDIT: более подробное объяснение:

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

+0

Спасибо за ответ, не могли бы вы объяснить больше, почему работает 'delim_whitespace'? Мне больше интересно узнать о происхождении проблемы – Valilutzik