如何在Python中合并200个CSV文件?

10 浏览
0 Comments

如何在Python中合并200个CSV文件?

我这里有200个分别以SH(1)到SH(200)命名的CSV文件。我想将它们合并成一个CSV文件。我该怎么做?

0
0 Comments

如何在Python中合并200个CSV文件?

问题出现的原因:有大量的CSV文件需要合并,传统的合并方法耗时且占用大量内存。

解决方法:使用pandas库来合并CSV文件。

首先,我们可以使用Stack Overflow中的答案来创建一个包含要合并的CSV文件的列表,然后运行以下代码:

import pandas as pd
combined_csv = pd.concat( [ pd.read_csv(f) for f in filenames ] )

如果你想要将合并后的数据导出到一个单独的CSV文件中,可以使用以下代码:

combined_csv.to_csv("combined_csv.csv", index=False)

这样就可以将合并后的数据保存到"combined_csv.csv"文件中。

需要注意的是,假设所有的文件都有每行的标题 - 一些行具有不同的标题。每个文件中的2列没有标题。如何合并这些文件,使得每个文件只添加一列。

为了保持合并后的数据的顺序,可以添加`sort=False`参数:

combined_csv = pd.concat( [pd.read_csv(f) for f in filenames ], sort=False)

如果有成千上万个CSV文件,这种方法可能会花费很长时间且占用大量内存。

0
0 Comments

在Python中合并200个CSV文件的方法是这样的:使用sed 1d sh*.csv > merged.csv命令。这种方法适用于Windows系统,可以使用copy *.csv merged.csv命令。如果要删除每个文件的标题信息,可以使用for f in mydir; do sed 1d $f >> merged.csv; done命令。但是这种方法会导致合并的文件中重复出现标题信息。

有用户提到了一个问题,就是如何在不复制每个文件的标题信息的情况下使用这个命令。还有用户提到,他不小心使用了sed 1d *.csv > merged.csv命令,在电脑崩溃之前运行了一段时间,因为存储空间不足。另一个用户提到,他使用sed 1d *.csv >> merged_file.csv命令时,显示了索引,导致合并后的文件大小为130MB,而以另一种方式合并10个CSV文件时,大小只有14.5MB,并且有时会导致存储空间不足。他的问题是如何消除索引。

合并200个CSV文件的方法是使用sed 1d sh*.csv > merged.csv命令,但会导致合并的文件中重复出现标题信息。如果要删除每个文件的标题信息,可以使用for f in mydir; do sed 1d $f >> merged.csv; done命令。对于出现的问题,可以尝试不复制每个文件的标题信息,或者寻找其他方法消除索引。

0
0 Comments

问题的出现原因:

用户想要在Python中合并200个CSV文件,但是在尝试使用f.next()方法时遇到了错误,提示'_io.TextIOWrapper' object has no attribute 'next'

解决方法:

根据用户提供的代码,可以通过以下步骤解决该问题:

1. 使用with open语法打开输出文件out.csv,并将其命名为fout

2. 先处理第一个文件sh1.csv,使用with open语法打开该文件,并将其命名为f。使用fout.writelines(f)将文件内容写入输出文件out.csv

3. 处理剩下的199个文件。使用循环遍历文件编号num从2到200,打开对应的文件sh + str(num) + .csv,并将其命名为f。使用next(f)跳过文件的头部(header),然后使用fout.writelines(f)将文件内容写入输出文件out.csv

此外,用户提到在Python 3中,可以使用f.__next__()替代f.next()。并且使用with open语法可以避免手动关闭文件。

另外一个用户提到在fout.write(line)之前,可以添加一行代码if line[-1] != '\n': line += '\n',用于确保每行数据都以换行符结尾。

还有一个用户解释了f.next()f.__next__()之间的区别,他解释说Python 3中将迭代器的特殊方法名从.next修改为.__next__,这是为了避免与用户代码中的其他用途冲突。他建议使用next(f)来调用迭代器的顶层函数,这样可以保证代码在所有Python版本中都能正常工作。

最后,用户互相致谢并表达了对解释的感谢,并表示很高兴在2022年能够在这里相遇。

0