如何从python中以空格分隔的.DAT文件中提取多个列

时间:2018-05-06 20:01:01

标签: python pandas numpy

我对编码很陌生并且没有对这个主题进行适当的教育(我的大部分经验都只是通过谷歌搜索而磕磕绊绊)而且我有一项我需要帮助的任务。

我有38个文件,看起来像这样:

NGANo:000a16d_1

Zeta:0.050000

Ds5-95:5.290000

评论:

期间,SD,SV,SA

0.010000 0.000433 0.013167 170.812839
0.020000 0.001749 0.071471 172.720229
0.030000 0.004014 0.187542 176.055129
0.040000 0.007631 0.468785 189.322248
0.050000 0.012815 0.912067 203.359441
0.060000 0.019246 1.556853 210.602517
0.070000 0.025400 1.571091 206.360018

它们是所有.DAT文件,是四列数据(Period,SD,SV,SA),每行是单行空格,另外每行数据末尾有两个空格。

对我来说唯一重要的数据是SA数据,我想从这38个文件中的每个文件中获取SA数据和标题(这个特定的例子是000a16d_1)并将它们全部放在同一张纸上一个excel电子表格(下一个后面的一列),只有标题后跟SA数据。

我尝试了一些不同的东西,但是我仍然坚持如何将一行数据从一列分成4.我不太了解我是否应该使用numpy或大熊猫。我知道第二行到最后一行的所有内容都是正确的,因为当我有打印(表格)它会打印数据行时,我只是不明白如何将单列分成多个。这是我目前的代码,所有的帮助表示赞赏。

import pandas as pd
import numpy as np
import os
import xlsxwriter
#
path = "C:/Users/amihi/Downloads/Plotter_Output"
dirs = os.listdir(path)
#
#
for file in dirs:
    table = pd.read_table(file, skiprows=4)
    SA = table.loc[:,"SA"]
    print(SA)

1 个答案:

答案 0 :(得分:0)

如果您愿意,也可以在不使用熊猫的情况下执行此操作。下面的代码只会处理它的表格部分,但不会处理文件顶部的信息。

finalColumns = []
for file in dirs:
    with open(file, "r") as f:
        for l in f:
            line = l.strip("\n")
            splitted = line.split()
            if len(splitted) > len(columns):
                 for i in range(len(splitted)):
                     columns.append([])
            counter = 0
            for item in splitted:
                columns[counter].append(item)
                counter += 1   
        finalColumns.append(columns[3])

添加到其他文件时,只需循环遍历finalColumns,每个项目都应该是文件中的新列。