我的原始数据是纯文本文件。它由1255行43列组成。我不想处理所有的数据,而是想创建一个只包含我感兴趣的数据的文本文件。你知道吗
例如,假设我想选择验证条件的所有数据:1 < column 26 < 7
。这是我的密码:
import numpy as np
import csv
import os
data = np.genfromtxt('data.txt', dtype = None)
path = os.getcwd()
csvfile = path + '/subgp1.txt'
counter = 0
with open(csvfile, 'w') as output:
writer = csv.writer(output, delimiter = '\t')
for row in range(len(data)):
if (data[row][26] > 1 and data[row][26] < 7):
counter += 1
writer.writerow([counter, data[row][1], data[row][2], data[row][3], ... data[row][42]])
代码的最后一行是,我只需将数据重新写入我创建的subgp1.txt
。有没有更有效的方法来做同样的事情?你知道吗
我的理由是:
1.最后一行应该简化。在我的例子中,最后一行是这样的:
writer.writerow([counter, '%-8d' % data[row][1], data[row][2],
data[row][3], '%-2.6f' % data[row][4], '%-2.6f' % data[row][5],
'%-2.6f' % data[row][6], '%-2.2f' % data[row][7],
'%-2.2f' % data[row][8], '%-2.2f' % data[row][9], ..., '%-2.4f' % data[row][42]])
2.我有42列,这是浪费时间。我相信有一个更整洁,更快的方法来做这件事。你知道吗
包pandas
在类似于我所寻求的任务中是否更有效?你知道吗
而不是写:
您可以将
[counter]
与data[row]
片连接起来:更好的是,您可以直接迭代数据行:
为此,您需要导入集合,然后您可以执行以下操作:
问题是你认为什么是低效的?每次为每个字段指定格式?你知道吗
如果你提前知道格式是什么,你可以使用它。你知道吗
相关问题 更多 >
编程相关推荐