【发布时间】:2014-03-11 13:34:41
【问题描述】:
我在名为 path 的目录中有几个单列 csv 文件,我想将所有这些列合并到一个文件中,并将该文件作为 out.csv 存储在名为 repsim 的目录中。
这是我的代码:
假设我已经有了files和fin=files[0]的列表
def ajouter (fin, files, out, path, repsim, delim=';'):
fic=os.path.join(path,fin)
with open(fic, 'rb') as fr:
print fic + " est overt"
tout=[]
for i in range(1, len(files)):
fil=files[i]
print fil + " en cours -------------"
f=os.path.join(path,fil)
with open(f, 'rb') as fi:
fr_reader = csv.reader(fr, delimiter=delim)
fi_reader = csv.reader(fi, delimiter=delim)
for row1, row2 in zip(fr_reader, fi_reader):
row2.append(row1[-1])
tout.append(row2)
fout=os.path.join(repsim,out)
with open(fout, 'ab') as output:
writer = csv.writer(output, delimiter=delim)
writer.writerows(tout)
这段代码只给了我一个两列文件,由files[0] 的列和文件中最后一个文件的列组成。
【问题讨论】:
-
您要堆叠列吗?你想并排保持列吗?如果两个文件包含同名的列,会发生什么?您能否提供两个示例输入 CSV 文件和相应的预期输出文件?
-
顺便说一句,我会为此使用
pandas。它可以读取 CSV 文件,然后堆叠和/或合并数据集并仅在几行中写入一个新的 CSV 文件。 -
我希望列并排,每个文件都有一个唯一的列名。
-
例如,file1=>column bw64 有 10 行,file2=>column hop64 也有 10 行,file3=>column recall64 也有 10 行