如何从多个目录的.txt文件生成数据帧?

时间:2019-05-23 16:57:59

标签: python pandas dataframe directory subdirectory

我有一个目录“ ... / 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 :(得分:0)

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个测量文件是否都具有相同的索引时间值,否则将它们连接在一起会出现问题。