使用np.loadtxt从格式奇怪的文本文件导入数据



我正试图从收到的文本文件中导入数据。

文本文件有点大(400 MB(。此链接提供(https://drive.google.com/file/d/11CwId3feJRZGvP2OUAtixuZEFztrCP3W/view?usp=sharing)。考虑到它的大小,它可能需要几分钟的下载时间。

文件中的数据采用了我以前从未遇到过的格式。列之间的分隔符似乎是分号,数据行之间似乎由一个空行分隔。

我没能读入数据。以下是我用来尝试从文件中导入一列字符串数据和两列浮点数据的Python代码:

import numpy as np
f = 'summ.txt'
ID = np.loadtxt(f, dtype=np.str, unpack=True, usecols=[4], skiprows=8, delimiter = '; ')
hbeg, hend = np.loadtxt(f3, unpack=True, usecols=[67,73], skiprows=8, delimiter = '; ')

一个解决方案/指导会很好。

我只需使用csv将其重新格式化为

import csv
import time
start = time.time()
with open('summ.txt') as fin, open('output.txt', 'w') as fout:
csv_reader = csv.reader(fin,  delimiter=';')  # read semicolon
csv_writer = csv.writer(fout, delimiter=',')  # write comma
for row in csv_reader:
if row:  # skip empty row
row = [x.strip() for x in row]  # remove spaces
csv_writer.writerow(row)

end = time.time()
print('time:', end-start)

在我的电脑上花了大约31秒。

但您也可以将值保留为2D列表,并转换为numpy arraypandas DataFrame

import csv
import time
start = time.time()
IDs  = []
hbeg = []
hend = []
with open('Pulpit/summ.txt') as fin:
csv_reader = csv.reader(fin,  delimiter=';')
for row in csv_reader:
if row:
row = [x.strip() for x in row]
if len(row) > 1:
IDs.append(row[4])
hbeg.append(row[64])       
hend.append(row[73])       

end = time.time()
print('time:', end-start)
print(IDs[:10])
print(hbeg[:10])
print(hend[:10])

相关内容

  • 没有找到相关文章

最新更新