12、pandas将多个具有相同列名的文件合并成一个文件
2017-12-26 本文已影响0人
让数据告诉你
文件的合并这里要用到os库的walk和path功能。
例如我们现在有这几个文件,现在想要将它们合并(纵向合并)成一个文件要怎么处理呢?
![](https://img.haomeiwen.com/i8612260/1f1cd4b00302fba8.png)
![](https://img.haomeiwen.com/i8612260/2d779c6316782600.png)
首先,我们要引入pandas和os库,并定义好文件夹的路径:
![](https://img.haomeiwen.com/i8612260/006d4d6fb45098e1.png)
其次,我们要新建一个空的DataFrame,列名设置为空就会默认为原始表格的列名。
![](https://img.haomeiwen.com/i8612260/11a650f41d888fec.png)
然后利用os库的walk功能遍历文件夹里的所有文件,并读取文件名字。
os.path.join能够将文件夹的路径和文件名字合并成每个文件的完整路径,然后将每个文件读取,在与空的DataFrame合并。
![](https://img.haomeiwen.com/i8612260/53cbc465440fbeed.png)
这样子就可以把文件夹内所有的文件进行合并了。
![](https://img.haomeiwen.com/i8612260/2276000fa604a197.png)
以上操作有几点需要注意的:
1、以上读取合并的是CSV文件,所以在文件路径中不能存在中文字符,否则会报错;
2、如果读取Excel文件的话,路径中可以存在中文字符不会受到影响;
3、在一个文件夹内只能有一种格式的文件,如果有多种格式的文件也会报错;
4、读取文件后出现乱码可以指定编码格式;
5、读取文件里如果有子文件夹,那么子文件夹的文件也会被一并的读取并合并。
以上说的是纵向合并,那么如果要进行横向合并,又要怎么操作呢?
提示:横向合并只需要将append替换成concat就可以了。
![](https://img.haomeiwen.com/i8612260/325e392841bf5086.png)