我创建了一个这样的文件列表:
merge_files = []
for i in range(2, 12):
merge_files.append(pandas.read_csv(final_user_study_path + "/P" + str(i) + "/DataCollection/data/merge.csv"))
我想创建一个巨大的csv
文件,其中包含此列表中的所有文件。
这是最有效的方法吗?
答案 0 :(得分:2)
我推荐使用unix shell。如果他们没有标题,或者只有第一个标题:
cat file1.csv file2.csv ... fileN.csv > result.csv
如果他们有标题,你必须先将它们剪掉:
cat file1.csv > result.csv
for i in {1..N}; do tail +2 file$i.csv >> result.csv; done
如果文件位于不同的目录中 - 使用每个文件的路径:
cat path1/file.csv path2/file.csv > result.csv
答案 1 :(得分:0)
pandas方式是在数据帧上使用concat,如果你想做一些操作(如过滤,删除重复等等),这可能很有用。
import io
import pandas as pd
让我们创建两个文件
csv1 = "a,b\n1,2"
csv2 = "a,b\n3,4"
file1 = io.StringIO(csv1)
file2 = io.StringIO(csv2)
循环遍历它们并结束:
pd.concat((pd.read_csv(i) for i in [file1,file2])).to_csv(index=False)
结果:
'a,b\n1,2\n3,4\n'
以可读的方式(我的首选方式)适应您:
files = []
for i in range(2, 12):
path = "{}/P{}/DataCollection/data/merge.csv".format(final_user_study_path,i)
files.append(path)
pd.concat((pd.read_csv(i) for i in files)).to_csv("output.csv",index=False)