Как прочитать CSV-файл pandas с разделителем-запятой и разделителем-запятой - PullRequest
0 голосов
/ 17 мая 2018

У меня есть CSV-файл со строками, который выглядит следующим образом: 87.89, "2 392,05", 14,77 373,2 (в третьей строке есть разделитель тысяч запятой)

Панды продолжают считать запятую ввторой столбец в качестве разделителя строк и показывает ошибку «Ошибка токенизации данных».

есть ли в пандах возможность игнорировать запятые между двойными кавычками?спасибо

пример строк:

9999992613813558569,87.89,"2,392.05",14.77,373.2
9999987064038821584,95.11,"3,397.04",42.15,"1,461.14"
9999956300203713283,6.67,194.02,41.23,"1,105.45"
9999946809576027532,15.08,353.84,29.43,591.9

Редактировать:

я уже пробовал:

read_csv(file, quotechar='"', encoding='latin1', thousands=',')
read_csv(file, quotechar='"', encoding='latin1', escapechar ='"')

1 Ответ

0 голосов
/ 17 мая 2018

Попробуйте прочитать это с:

pd.read_csv(myfile, encoding='latin1', quotechar='"')

Каждый столбец, содержащий их, будет рассматриваться как тип object. Как только вы получите это, чтобы вернуться к использованию поплавка:

df = df.apply(lambda x: pd.to_numeric(x.astype(str).str.replace(',',''), errors='coerce'))

В качестве альтернативы вы можете попробовать:

pd.read_csv(myfile, encoding='latin1', quotechar='"', error_bad_lines=False)

Здесь вы можете увидеть, что было опущено из оригинала csv - что вызвало проблему.

За каждую пропущенную строку вы получите Warning вместо Error.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...