首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从多个目录下的.txt文件生成一个数据帧?

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

Stack Overflow用户
提问于 2019-05-24 00:57:59
回答 1查看 90关注 0票数 0

我有一个目录".../data“,其中有多个子目录,它们的名称是序列号加上一些无用的信息-例如"17448_2017_Jul_2017_Oct",其中第一个数字是序列号。在每个子目录中,我有四个".txt“文件,它们的行/行包含日期和时间信息,以及特定类型的属性,例如湿度,在每个子目录中都以相同的方式命名-例如"2019-01-29 03:11:26 54.7”。每个.txt文件顶部的前八行也应该删除。

我正在尝试编写的代码:为每个序列号生成一个数据帧,子目录名称中的子目录序列号在名为'Machine‘的列中,日期/时间作为数据帧索引,每种类型的属性作为一列,如atr1、atr2、atr3和atr4。

我的第一次试验是这样的:

代码语言:javascript
复制
 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:

但是,如你所见,我完全迷失了.:/

非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2019-05-24 08:14:26

IIUC,你可以尝试这样的东西(注意这是测试和反馈的开始,因为我现在不能在我的手机上测试它):

代码语言:javascript
复制
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个度量文件是否都具有相同的索引时间值,否则会出现连接它们的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56279890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档