Как сгенерировать фрейм данных из файлов .txt в нескольких каталогах? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть каталог "... / data", в котором есть несколько подкаталогов, имена которых представляют собой серийный номер плюс некоторая бесполезная информация - например, "17448_2017_Jul_2017_Oct", где первое число на нем - это серийный номер.Внутри каждого подкаталога у меня есть четыре файла «.txt», строки / строки которых содержат информацию о дате и времени, а также атрибут определенного типа, скажем, влажности, все имена в каждом подкаталоге называются одинаково - например, «2019-01-29 03:11:26 54,7 ".Первые восемь строк в каждой верхней части .txt файла также должны быть отброшены.

Что я пытаюсь запрограммировать: код, который генерирует фрейм данных для каждого серийного номера с серийным номером подкаталога в имени подкаталога встолбец с именем «Machine», дата / время в качестве индекса фрейма данных и каждый тип атрибута в виде столбца, например atr1, atr2, atr3 и atr4.

Моим первым испытанием было что-то вроде:

 path = "/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos/dados"

for i in os.listdir(path):
    if os.path.isfile(os.path.join(path,i)) and '17884' in i:
        with open(path + i, 'r') as f:

Но, как вы видите, я полностью потерян ...: /

Большое вам спасибо заваша помощь!

1 Ответ

0 голосов
/ 24 мая 2019

IIUC, вы можете попробовать вот так (обратите внимание, это предназначено для начала тестирования и обратной связи, потому что в данный момент я не могу проверить это на своем мобильном телефоне):

import os
import pandas as pd 
path = "/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos/dados/"

df = pd.DataFrame()

for fld in os.listdir(path):
    subfld = path + fld
    if os.path.isdir(subfld):
        aux = pd.DataFrame()
        sn = fld.split('_')[0]
        for file in os.listdir(subfld):
            filepath = os.path.join(subfld, file)
            if os.path.isfile(filepath):
                new_col = pd.read_fwf(filepath, colspecs=[(0, 19), (20, -1)], skiprows=8, header=None, parse_dates=[0], index_col=0)
                aux = pd.concat([aux, new_col], axis=1)
        aux['Machine'] = sn
        df = df.append(aux)

ОднакоИнтересно, все ли ваши 4 файла измерений в папке имеют одинаковые значения времени индексации, иначе возникнет проблема их объединения.

...