如何快速合并多个CSV / Excel / txt 文件

最近,一个师姐(医学博士)拿到一批相同表头的 CSV 文件,想要它们合并在一起。不会写代码,只能用 EXCEL 打开文件,手动粘贴复制。

但是,又遇到问题了,她的 EXCEL 非常大,有的一个都有 500MB,电脑根本打不开,所有的合并在一起将近 3G 大小。

电脑直接崩溃!然后...

找到我

image

接下来分享两招合并文件的方法!


1 通过 cat 合并文件

  • 使用环境: Linux系统。其他系统没有这个命令

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

这里的输出设备可以简单理解为 连接后的文件存储地址

  • 语法格式
cat [-AbeEnstTuv] [--help] [--version] fileName
  • 参数说明:
    • -n 或 --number:由 1 开始对所有输出的行数编号。
    • -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
    • -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
    • -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
    • -E 或 --show-ends : 在每行结束处显示 $。

例1

假如有一批 csv 文件如下:

image

每个 csv 文件内容:

image

都是一样的表头,可能行数不一样。

我们需要把它合并成一个文件,使用

cat *.csv > all.csv

表示把当前目录下的所有 csv 文件 合并到 all.csv 里面

不管文件有多大,都是秒秒钟的事情!

打开 all.csv 文件看一下合并效果

image

图上可以看到,cat 也有不足,虽然合并了,但是表头却跑在了右边。

如果你觉得有影响,手动删除就可以。

2 使用 pandas 合并文件

对于无法使用第一种方法的,我们还有解决办法!

from glob import glob
import pandas as pd
files = glob('shili2/*.csv')
for idx, file in enumerate(files):
    df = pd.read_csv(file)
    df.to_csv('all2.csv', mode='a', index=False, header=None)
    # mode='a'表示附加方式写入,文件原有内容不会被清除

查看一下效果

image

同样的,每个表的表头也会被写入进来。

pandas 没有 cat 的速度快,因为 pandas 会先打开数据,再保存。如果文件过大,会影响打开保存速度。

总结:介绍了两种合并 csv 文件的方法。 但同时也可以扩展到 其他文件的合并,比如 excel, txt等。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容