Файл с разделителями табуляции не читается правильно, ищет пользовательское разделение на pandas read - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть большой (4+ ГБ) текстовый файл, который должен разделяться символами табуляции, но что-то должно быть написано неправильно. Когда я читаю его в pandas с использованием разделителя '\ t', он хорошо читает строки, но все в одном столбце. При осмотре head () кажется, что некоторые столбцы разделены пробелом, некоторые - 10 пробелами, а некоторые - на каждое число интервалов между ними. Это повсеместно.

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

Итак, файл, который выглядит вот так:

Column1 Column2     Columns3    Column4        Column5
text    date        text        int            text

в конечном итоге будет выглядеть так:

Column1 Column2 Column3 Column4 Column5
text    date    text    int     text

Я пробовал некоторые регулярные выражения в sep:

import pandas as pd
data = pd.read_csv(path+"my_file.txt", sep='\s+\-*\s*')

Но, если честно Я не уверен, что он делает то, о чем я думаю (рассматривая все пробелы в качестве разделителя, независимо от длины), и в любом случае возникает ошибка:

pandas.errors.ParserError: Expected 12 fields in line 5, saw 15. Error could possibly be due to quotes being ignored when a multi-char delimiter is used.

Итак, не уверен, что чтобы сделать там, либо.

РЕДАКТИРОВАТЬ: Кроме того, как кто-то указал в комментариях, кажется, что у меня есть переменные длины строк при разбиении на пробелы. Есть ли способ читать в файле и иметь количество столбцов, равное максимальной длине строки, а не разрывать, если они не соответствуют тому, что было прочитано вначале?

Кажется, я справлюсь это с pandas .read_fwf, но мне все еще любопытно, есть ли способ сделать это в соответствии с вопросом, на случай, если он появится снова без преимущества фиксированной ширины.

...