Панды читают файл .csv без подходящего разделителя. (только отдельный первый столбец против "остальных") - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь импортировать файл .csv в Python-панды следующим образом:

dataframe = pd.read_csv(inputfile, sep=delimiter, header=None)

Однако каждая строка (огромного) inputfile состоит из целого числа, за которым следует строка. Как это:

1234 this string % might; contain 눈 anything

Результатом должно быть два столбца dataframe, в котором указано Integer в позиции 1, а остальная часть строки в позиции 2.

Поскольку в строке может присутствовать любой символ, я не могу использовать один символ в качестве разделителя. Попытка использовать крайне маловероятную длинную строковую последовательность, такую ​​как «khlKiwVlZdsb9oVKq5yG», в качестве разделителя для одного человека выглядит как грязный обходной путь, во-вторых, не может быть надежным на 100% и в-третьих вызывает следующую «ошибку / неудобство»:

ParserWarning: откат к движку 'python', потому что движок 'c' не поддерживает разделители регулярных выражений (разделители> 1 символ и отличные от '\ s +' интерпретируются как регулярное выражение); Вы можете избежать этого предупреждения, указав engine = 'python'.

Итак, мой вопрос: есть ли лучший способ решить мою проблему? Может быть, какой-нибудь вариант сказать пандам игнорировать любые дальнейшие разделители после того, как встретился первый в строке?

Спасибо за любые предложения!

1 Ответ

0 голосов
/ 27 апреля 2018

По сути, ваш .csv не является CSV ;-)

Я предлагаю вам вручную открыть и прочитать этот файл, разделив каждую строку, используя первый пробел, а затем преобразовать результат в DataFrame, если это необходимо.

fp = ...  # your file pointer
data = [line.split(' ', maxsplit=1) for line in fp]

Если в вашем файле много данных, попробуйте вместо этого использовать выражение генератора.

В обоих случаях вы можете конвертировать data в DataFrame:

pandas.DataFrame.from_records(data, columns=['Integer', 'String'])

(.. или напрямую используя DataFrame конструктор)

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