我正在研究一个Python脚本,该脚本应该合并一些CSV文件的某些列(很多情况下,大约200个文件)。所有文件如下所示:
Timestamp; ...; ...; ...; Value; ...
date1;...;...;...; FirstValue;...
date2;...;...;...; SecondValue;...
等等。
我要从第一个文件中提取时间戳和“值”列。在其他文件中,我仅需要“值”列。
我现在的脚本是:
#!/usr/bin/python
import csv
import os, sys
# Open a file
path = "Z:/myfolder"
dirs = os.listdir( path )
#Conto il numero di file nella cartella
print len(dirs)
#Assegno il nome del primo file
file = dirs[0]
#Apro il primo file per la lettura di timestamp e primo valore (Value)
primofile = csv.reader(open(file, 'rb'), delimiter=";", quotechar='|')
timestamp, firstValue = [], []
#Per ogni riga del primofile
for row in primofile:
#Copio timestamp
timestamp.append(row[2])
#e Value
firstValue.append(row[15])
with open("provacript.csv", 'wb') as f:
writer = csv.writer(f, delimiter=';')
i = 0
while i < len(timestamp):
writer.writerow([timestamp[i]] + [firstValue[i]])
i = i+1
因此,在“ provascript.csv”中,我具有时间戳和第一列以及来自第一个文件的值。下一步是一个一个地打开列表“ dirs”中的文件,读取“ Values”列(第15列),将该列保存在数组中并将其写入“ provascript.csv”中。
我的代码是:
for file in dirs:
data = csv.reader(open(file, 'rb'), delimiter=";", quotechar='|')
column = []
for row in data:
column.append(row[15])
在数组“ column”中,我应该有值。我必须将此值添加到“ provascript.csv”的新列中,并继续对所有文件执行相同的操作。我怎样才能做到这一点?
我想要一些类似的东西
TimestampFromFirstFile;ValueFromFirstFile;ValueFromSecondFile;ValueFromThirdFile;...
date1;value;value,value;...
date2;value;value;value;...
date3;value;value;value;...
到目前为止,一切都很好。我修复了它(谢谢),但是与其在第一行中读取和写入Value,不如说我写了一部分名称。我不希望使用Timestamp; Value; Value; Value,而是使用Timestamp; Temperature1; Temperature2; Presence1; Presence2。
我该怎么做?
我应该创建完整的结构,最后将其保存在输出文件中(假设文件在它们之间是有序的)
#create the full structure: output_rows
primofile = csv.reader(open(file, 'rb'), delimiter=";", quotechar='|')
output_rows = []
for row in primofile:
output_rows.append([row[2], row[15]])
获得列表的有序列表后,请与其他文件一起完成它们
for file in dirs:
data = csv.reader(open(file, 'rb'), delimiter=";", quotechar='|')
column = []
for idx,row in enumerate(data):
output_rows[idx].append(row[15])
最后将其保存到文件
with open("output.csv", 'wb') as f:
writer = csv.writer(f, delimiter=';')
for row in output_rows:
writer.writerow(row)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句