【发布时间】:2022-01-08 02:22:15
【问题描述】:
我有一个包含坐标和值的 CSV 文件,我想在一定范围内过滤它,157 我试过了 但是像这样,它为 X 坐标取正确的值,而为其他变量取错误的值。有没有办法在 csv 文件中只选择我的范围之间的行并将它们写回另一个文件?import numpy as np
from scipy.spatial import cKDTree as KDTree
import csv
import sys
import os
from scipy.interpolate import griddata
meanflowdata='fieldlp3.csv' #'../Mean Flow Data/hcmd_3_100000.csv'
f=os.path.splitext(os.path.basename(meanflowdata))
outputfile=f[0]+'_cut' + f[1]
xd=[]
yd=[]
zd=[]
cd=[]
rhod=[]
range_start=157.0
range_end=480.0
with open(meanflowdata,'rb') as csvfile:
spamreader=csv.reader(csvfile, delimiter=',')
for row in spamreader:
if len(row)>2:
mask = np.logical_and(float(row[0])>=range_start, float(row[0])<=range_end)
rows =
xd.append(float(row[0]))
yd.append(float(row[1]))
zd.append(float(row[2]))
rhod.append(float(row[3]))
cd.append(float(row[4]))
Xd=np.sort(np.asarray([xd,yd,zd,cd,rhod]))
print
mask = np.logical_and(Xd.T[:,0]>=range_start, Xd.T[:,0]<=range_end)
xd = Xd.T[:,0][mask]
print "# Writing output"
with open(outputfile, 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',')
for i in range(len(xd)):
spamwriter.writerow([str(xd[i]),str(yd[i]),str(zd[i]),str(cd[i]),str(rhod[i])])
【问题讨论】: