#python #pandas #data-science
#python #панды #наука о данных
Вопрос:
Хотя мой csv-файл был не таким большим, он выдавал эту ошибку, когда я пытался его прочитать: CParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.
он выдавал эту ошибку, когда я использовал df = pd.read_csv(path)
. Затем я изменил код на df = pd.read_csv(path,engine='python')
, и он отлично сработал. Что может быть причиной этого?
Ответ №1:
Насколько я знаю, причина заключалась в том, что в данных были некоторые возвраты каретки, и pandas использовался в качестве ограничителя строки, как если бы это была новая строка. Вы можете попробовать lineterminator='n'
использовать ключевое слово also.
Ответ №2:
Из документации
sep: str, по умолчанию используется разделитель ‘,’. Если значение sep равно None, движок C не может автоматически определить разделитель, но механизм синтаксического анализа Python может, что означает, что последний будет использоваться и автоматически обнаружит разделитель с помощью встроенного в Python средства поиска csv.Sniffer. Кроме того, разделители длиной более 1 символа, отличные от ‘s ‘, будут интерпретироваться как регулярные выражения, а также заставят использовать механизм синтаксического анализа Python. Обратите внимание, что разделители регулярных выражений склонны игнорировать данные в кавычках. Пример регулярного выражения: ‘r t’.
Таким образом, вы можете попробовать df = pd.read_csv(path, sep=',')
заменить запятую на все, что используется.