Исправлена ​​манипуляция с шириной файла в Pandas - PullRequest
0 голосов
/ 19 октября 2018

У меня есть файл фиксированной ширины со следующим форматом:

5678223313570888271712000000024XAXX0101010006461801325345088800.0784001501.25abc@yahoo.com                                        
5678223324686600271712000000070XAXX0101010006461801325390998280.0784001501.25abcde.12345@gmail.com                             5678123422992299

Вот что я попробовал:

import pandas as pd

ColSpecs = [(0,16),(16,31),(31,44),(44,62),(62,70),(70,73),(73,77),(77,127),(127,143)]

df = pd.read_fwf("~/filename.txt",colspecs=ColSpecs,Header=True)

Теперь это, безусловно, помогает мне чисто конвертировать в формате Pandas.Тем не менее, пустые (или фиксированные пробелы) обрезаются.Например, в поле «Электронная почта» (# 8) установлено 50 символов.Они усекаются, как только они импортируются в кадр данных Pandas.

Для манипулирования данными я создаю 3 новых поля, которые извлекаются из значений ранее импортированных полей.

Структура выходного файла:

[(0,16), (16,31), (31,44), (44,62), (62,70), (70,73), (73,77), (77127), (127143), (143153), (153,163), (164,165)]

С тех пор, как я не нашел ни одного метода to_fwf на фреймах данных или какой-либо другой альтернативы для Pandas -> Flat File (сохраняя оригинальную длину без изменений), я был бы очень признателен, если кто-нибудьесть лучшее решение.

PS: я читал, что awk / sed в Unix работает лучше, но все же хотел бы знать для Python

...