4

Мне нужно прочитать файл в Python пандах следующего типа

"column1","column2","column3","column4"
"value1","value,1","value2","value3"
"value5","value6","value7","value8"
"value32","value21","value,31","value,44"

Я пытался с помощью

file1 = pd.read_csv('sample.txt',sep=',\s+',skipinitialspace=True,quoting=csv.QUOTE_ALL,engine=python)

он говорит что-то вроде ValueErro(ожидается, что некоторые строки получили что-то еще) не совсем

Мне нужно прочитать большой CSV-файл этого типа и загрузить его в dataframe. какие изменения я должен сделать, чтобы прочитать его правильно.

2 ответа2

2

Используйте в python pandas sep=',\s*' вместо sep=',\s+' , это сделает пробел (ы) необязательным после каждой запятой:

file1 = pd.read_csv('sample.txt',sep=',\s*',skipinitialspace=True,quoting=csv.QUOTE_ALL,engine='python')

Запятая в двойных кавычках - ОК, это разрешено стандартом rfc4180.
Что касается " " внутри значений данных (например, "value", "13") - вам нужно очистить исходный файл перед обработкой. Если двойные кавычки остаются вместе как "", это не должно быть проблемой, потому что это соответствует стандарту CSV, оно вызывает экранированные двойные кавычки, но если между двойными кавычками есть пробел, вам нужно его очистить

Использование:

sed -r 's/\"\s+\"/\"\"/g' src.csv >cleared.csv 

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

sed -r 's/\"\s+\"//g' src.csv >cleared.csv 

полностью удалить внутренние кавычки.

2

Нет необходимости предварительно обрабатывать CSV-файл, просто используйте движок типа python:

dataset = pd.read_csv('sample.csv', sep=',', engine='python')

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .