Подтвердить что ты не робот

Чтение файла с разделителями табуляции с помощью Pandas - работает в Windows, но не на Mac

Я читал файл данных с разделителями табуляции в Windows с помощью Pandas/Python без проблем. Файл данных содержит записи в первых трех строках, а затем следует с заголовком.

df = pd.read_csv(myfile,sep='\t',skiprows=(0,1,2),header=(0))

Теперь я пытаюсь прочитать этот файл с помощью моего Mac. (Мое первое использование Python на Mac.) Я получаю следующую ошибку.

pandas.parser.CParserError: Error tokenizing data. C error: Expected 1
fields in line 8, saw 39

Если аргумент error_bad_lines для read_csv равен False, я получаю следующую информацию, которая продолжается до конца последней строки.

Skipping line 8: expected 1 fields, saw 39
Skipping line 9: expected 1 fields, saw 125
Skipping line 10: expected 1 fields, saw 125
Skipping line 11: expected 1 fields, saw 125
Skipping line 12: expected 1 fields, saw 125
Skipping line 13: expected 1 fields, saw 125
Skipping line 14: expected 1 fields, saw 125
Skipping line 15: expected 1 fields, saw 125
Skipping line 16: expected 1 fields, saw 125
Skipping line 17: expected 1 fields, saw 125
...

Нужно ли указывать значение для аргумента кодирования? Кажется, мне не нужно, потому что чтение файла отлично работает в Windows.

4b9b3361

Ответ 1

Самая большая подсказка - все строки возвращаются на одну строку. Это означает, что терминаторы строк игнорируются или отсутствуют.

Вы можете указать ограничитель строки для csv_reader. Если вы находитесь на маке, созданные строки заканчиваются на \r, а не на стандарте linux \n или еще лучше на подтяжках и появлении подходов к окнам с \r\n.

pandas.read_csv(filename, sep='\t', lineterminator='\r')

Вы также можете открыть все свои данные, используя пакет кодеков. Это может повысить надежность за счет скорости загрузки документа.

import codecs

doc = codecs.open('document','rU','UTF-16') #open for reading with "universal" type set

df = pandas.read_csv(doc, sep='\t')

Ответ 2

Другой вариант - добавить engine='python' к команде pandas.read_csv(filename, sep='\t', engine='python')