我有一个 4 列 x 180.000 行的数据文件。我想根据第 3 列中的值在特定间隔内的标准(即最小值 < 第 3 列值 < 最大值)选择要保存到新文件的整行数据。
任何想法如何做到这一点?
使用csv
模块读写,然后只过滤:
with open(inputfilename, 'rb') as inputfile, open(outputfile, 'wb') as outputfile:
reader = csv.reader(inputfile)
writer = csv.writer(outputfile)
for row in reader:
if minval <= int(row[2]) <= maxval:
writer.writerow(row)
可以通过简单的 CSV 读/写来完成。可以使用 Numpy 更优雅地以矢量化形式完成,而且由于行数很大,Numpy 可能会更快。
import numpy as np
#Load file into a 'MATRIX'
data=np.loadtxt('name_of_delimited_file.txt')
# Find indices where the condition is met
idx_condition_met=(data[:,2] > min) & (data[:,2] < max)
np.savetxt('output.txt', data[idx_condition_met], delimiter=',')