Python 读取多个CSV文件,在空行处剪切,排序列数组
我想用Python3.6读取多个CSV文件,跳过标题并停在第一个空行。然后,我只想提取每个csv文件的第四列,并将其填充到数组中,但排序方式如最后所示 我的文件: 到目前为止,这是我的代码,但我对输出顺序不满意,也许还有更优雅的方法Python 读取多个CSV文件,在空行处剪切,排序列数组,python,arrays,csv,Python,Arrays,Csv,我想用Python3.6读取多个CSV文件,跳过标题并停在第一个空行。然后,我只想提取每个csv文件的第四列,并将其填充到数组中,但排序方式如最后所示 我的文件: 到目前为止,这是我的代码,但我对输出顺序不满意,也许还有更优雅的方法 csvdata_d=[] for i in range(timestep): # timestep = number of files with open(csvname[i]) as f: reader = csv.reader(f)
csvdata_d=[]
for i in range(timestep): # timestep = number of files
with open(csvname[i]) as f:
reader = csv.reader(f)
readerlist=list(reader)
for row in readerlist[2:]: # skip two header lines
if len(row) == 0: # empty line definition
break
else:
row=list(row)
csvdata_d.append(row[3]) # fourth column
print(csvdata_d)
我的输出是:csvdata_d=['1.1','1.2','1.3','2.1','2.2','2.3','3.1','3.2','3.3']
但我希望它是['1.1','2.1','3.1',['1.2','2.2','3.2',['1.3','2.3','3.3']
谢谢你的帮助。我用numpys genfromtxt模块和一个循环找到了空行
headsize=2 #lines toskip at beginning
csvdata=[]
measuredata=[]
with open (csvname[0])as f: #Measurement of file to first empty row
reader = csv.reader(f)
readerlist=list(reader)
lengthfile=(len(readerlist))
for row in readerlist[headsize:]:
if len(row)== 0:
break
else:
measuredata.append(list(row[3]))
skfooter=int(lengthfile-(len(measuredata)+(Headsize+1))) #calc number of rows below empty line
for i in range(timestep):
data=np.genfromtxt((csvname[i]), delimiter=',', skip_header=headsize, usecols=3, skip_footer=skfooter)
csvdata.append(data)
s=[]
for i in range (len(csvdata[0])):
s.append([item[i] for item in csvdata])
print(s)
所有的CSV文件在空白行之前都有相同的行数吗?否则,您需要的格式将是模糊的。是的,它们的行数都相同。您在正确的轨道上。如果你想要一个列表,那就做一个。