Как разделить данные из текстового файла и создать отдельные столбцы в определенной позиции

это образец данных

ao112   qwertyuiopasdfgh
ao12234 isbcbcobcwocbwowd
ao12    lscnldcnoodqhiod

Я хочу создать фрейм данных, используя файл .txt, где фрейм данных должен создавать отдельные столбцы в этом примере (2 столбца), используя эту информацию. имя столбца | позиция код |1-7 пустой |8 описание|9- до конца Мне нужно создать столбцы фрейма данных, отделив их от определенной позиции в примере, который находится в пустой позиции.

пытался использовать этот код, но не смог найти, какой параметр следует использовать в sep

data=pd.read_csv('filepath',sep=' ',name=['code','description'])

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать pandas.read_fwf:

Вы можете вывести формат, используя colspecs='infer', или предоставить полный список диапазонов.

colspecslist of tuple (int, int) or ‘infer’. optional

A list of tuples giving the extents of the fixed-width fields of each line as half-open intervals (i.e., [from, to[ ). String value ‘infer’ can be used to instruct the parser to try detecting the column specifications from the first 100 rows of the data which are not being skipped via skiprows (default=’infer’).

(pd.read_fwf('filepath', colspecs='infer', header=None)
   .set_axis(['code','description'], axis=1)
)

В качестве альтернативы используйте разделитель регулярных выражений с pandas.read_csv (если у вас есть один или несколько пробелов в качестве разделителя):

pd.read_csv('filepath', sep='\s+', names=['code','description'])

выход:

      code        description
0    ao112   qwertyuiopasdfgh
1  ao12234  isbcbcobcwocbwowd
2     ao12   lscnldcnoodqhiod

хорошо, что я должен сделать для этого типа сценария? code description ao1233 kdpncwdc qsndwoiend qsonqondo здесь sep='\s+' не будет работать, какая альтернатива в read_csv

Siva Rama krishna Kumar 13.05.2022 12:33

Почему нет? Должны ли вы иметь 2 или 3 столбца в этом случае?

mozway 13.05.2022 14:31

только 2 столбца, но если я использую описанный выше метод read_csv, он создаст (из моего примера) 4 столбца

Siva Rama krishna Kumar 13.05.2022 14:34

В этом случае, я думаю, требуется read_fwf

mozway 13.05.2022 14:49

с помощью этого метода read_fwf мой требуемый вывод был получен, но если я использую read_csv, я не мог получить тот же вывод, что и read_fwf. я хочу знать, возможно ли это или нужно не только 2 столбца, но если я использую вышеуказанный метод read_csv, он создаст (из моего примера) 4 столбца

Siva Rama krishna Kumar 13.05.2022 14:56

Если бы у вас было как минимум 2 пробела между двумя столбцами, вы могли бы использовать read_csv с \s\s+ в качестве разделителя, но здесь это не так.

mozway 13.05.2022 14:59

так что это невозможно, в read_csv следует идти с read_fwf

Siva Rama krishna Kumar 13.05.2022 15:04

Другие вопросы по теме