如何将包含多个表的.dat文件读入一个数据帧?

2024-04-27 14:46:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个测量设备,它可以像raw一样将数据记录在.dat文件中_数据.dat在this folder中,所有表都具有相同的结构,我希望能够将文件中的最后一个表提取到数据帧中。你知道吗

该文件有几个表,我不确定这里的表格结构是否是.dat文件的标准结构,但我尝试将文本粘贴到excel中,它将文本识别为单独的表,因此可能有一种相当标准的方法可以将结构正确地读入python。我找不到一个,所以我尝试了一种非常复杂的方法,将.dat文件读入一个字符串,然后手动切掉文件的顶部部分,将其余部分保存为.dat文件。我希望能够以某种方式将结果保存为.csv或.xls,但我仍然找不到如何做到这一点。此外,在导入后,表格将转换为\t,并且不会返回到保存文件中的表格。我的代码如下


mylines = []                             
with open ('raw_file.dat', 'rt') as myfile:
    for myline in myfile:
        mylines.append(myline)

string = (mylines[8:])

with open("updated.dat", "w") as output:
    output.write(str(string))

我必须承认我对python还相当陌生,而且我不确定我是否正确地使用了这些函数。不过,我还是希望有一种比我正在尝试的解决方法更直接的方法。你知道吗


Tags: 文件数据方法文本标准rawaswith
1条回答
网友
1楼 · 发布于 2024-04-27 14:46:39

如果您可以确定所需的第三个表从第8行开始,那么就没有理由让它比从第8行开始索引文件更复杂了。在这里,您可以使用字符串操作和列表理解来清理数据:

import pandas as pd

# Read the data.
with open('raw_data.dat', 'r') as fh:
    lines = fh.readlines()[8:]

# Remove newlines, tabs, and split each string separated by spaces.
clean = [line.strip.replace('\t', '').split() for line in lines]

# Feed the data into a DataFrame.
data = pd.DataFrame(clean[1:], columns=clean[0])

输出:

               Time         Variab1e1  ...               v18               v19
0  +0.00000000e+000  +3.04142181e-002  ...  +0.00000000e+000  +0.00000000e+000
1  +1.00000000e+000  +1.96144191e-001  ...  +1.00000000e+000  +0.00000000e+000
2  +2.00000000e+000  +3.75599731e-001  ...  +2.00000000e+000  +0.00000000e+000

如果要将值转换为浮点值,可以在将数据转换为数据帧之前执行此操作:

headers = clean[0]
rows = [[float(value) for value in row] for row in clean[1:]]

data = pd.DataFrame(rows, columns=headers)

让你的身体更干净:

   Time  Variab1e1  Variable2  Variable3  Variable4  ...  v15  v16   v17  v18  v19
0   0.0   0.030414        0.0   1.383808        0.0  ...  0.0  0.0  15.0  0.0  0.0
1   1.0   0.196144        1.0   7.660262        1.0  ...  0.0  1.0  15.0  1.0  0.0
2   2.0   0.375600        2.0  15.356726        2.0  ...  0.0  2.0  15.0  2.0  0.0

相关问题 更多 >