繁体   English   中英

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

[英]How to extract multiple columns from a space delimited .DAT file in python

我对编码还很陌生,并且没有对该主题进行适当的教育(我的大部分经验只是在Google搜索上绊脚石),并且我有一项需要帮助的任务。

我有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文件,是四列数据(句点,SD,SV,SA),每行用单个空格分隔,此外,每行数据的末尾还有两个空格。

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

我尝试了几种不同的方法,但是我仍然坚持如何将数据行从一列分离为4。我不太了解应该使用numpy还是pandas。 我知道直到倒数第二行的所有内容都是正确的,因为当我使用print(table)时,它确实打印了数据行,我只是不知道如何将单列分成多个。 这是我当前的代码,感谢您的协助。

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)

如果需要,您也可以不使用熊猫来执行此操作。 下面的代码将仅处理其表部分,而不会处理文件顶部的信息。

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即可,每个项目将成为文件中的新列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM