如果我有一个CSV文件的Python列表,如何将它们合并到一个巨大的CSV文件中?

2024-06-11 03:09:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了如下文件列表:

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文件。你知道吗

这是最有效的方法吗?你知道吗


Tags: 文件csvpathinpandas列表forread
2条回答

最好的方法是在数据帧上使用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)

我推荐unixshell。如果它们没有标题,或者只有第一个标题:

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

相关问题 更多 >