python 多张表合并 python 合并两个表格_将已有的dataframe合并

要想在某个领域做的好,先要知道最好的人做成了什么样,没有这个见识就很难进步。



python 多张表合并 python 合并两个表格_dataframe两个表合并_02

背景

在日常工作中经常回用到数据分析与统计工作,而在实施数据分析之前,最为最要的就是数据的搜集、整理工作。这里介绍一下多个相同格式的excel合并的处理。如果在excel文件表比较少时,手工合并还可以应付,当几十个几百个甚至更多的表时,手工合并效率会非常低,于是让计算机自动合并处理,帮助我们完成工作就显得非常有必要。

同一文件夹下合并excel文件

比如,在“2019年集团大学生招聘”下有两个表格,想要实现的是将这两个表格数据合并。

python 多张表合并 python 合并两个表格_将已有的dataframe合并_03

各个表中的数据格式如下图:

python 多张表合并 python 合并两个表格_python 多张表合并_04

import pandas as pdimport os#文件路径file_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'#构建新的表格名称new_filename = file_dir + '\\new_file.xls'#找到文件路径下的所有表格名称,返回列表file_list = os.listdir(file_dir)new_list = []for file in file_list:    #重构文件路径    file_path = os.path.join(file_dir,file)    #将excel转换成DataFrame    dataframe = pd.read_excel(file_path)    #保存到新列表中    new_list.append(dataframe)#多个DataFrame合并为一个df = pd.concat(new_list)#写入到一个新excel表中df.to_excel(new_filename,index=False)
import pandas as pd
import os

#文件路径
file_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'
#构建新的表格名称
new_filename = file_dir + '\\new_file.xls'
#找到文件路径下的所有表格名称,返回列表
file_list = os.listdir(file_dir)
new_list = []

for file in file_list:
    #重构文件路径
    file_path = os.path.join(file_dir,file)
    #将excel转换成DataFrame
    dataframe = pd.read_excel(file_path)
    #保存到新列表中
    new_list.append(dataframe)

#多个DataFrame合并为一个
df = pd.concat(new_list)
#写入到一个新excel表中
df.to_excel(new_filename,index=False)




结果:

python 多张表合并 python 合并两个表格_python 多张表合并_05

不同文件夹下合并excel表

有时候表格存放在文件夹下,现在需要将不同文件夹下的表格合并,此时需要对程序进行简单的修改。

python 多张表合并 python 合并两个表格_dataframe两个表合并_06

文件目录结构如下:

2019年集团大学生招聘

  • ------公司A
  • ------A公司2019年度接收毕业生公示信息表
  • ------公司B
  • ------B公司2019年度接收毕业生公示信息表

在此之前需要先了解一下os模块中的walk方法:

import osfile_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'file_list = os.walk(file_dir)for x,y,z in file_list: #x是文件路径,y是目录下的文件夹,z目录下的文件    print('x是{}'.format(x))    print('y是{}'.format(y))    print('z是{}'.format(z))    print('*'*50)
import os

file_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'
file_list = os.walk(file_dir)
for x,y,z in file_list: #x是文件路径,y是目录下的文件夹,z目录下的文件
    print('x是{}'.format(x))
    print('y是{}'.format(y))
    print('z是{}'.format(z))
    print('*'*50)




结果:

x是./2019年集团大学生招聘y是['公司A', '公司B']z是[]**************************************************x是./2019年集团大学生招聘\公司Ay是[]z是['A公司2019年度接收毕业生公示信息表.xlsx']**************************************************x是./2019年集团大学生招聘\公司By是[]z是['B公司2019年度接收高校毕业生信息表\xa0.xls']**************************************************
x是./2019年集团大学生招聘
y是['公司A', '公司B']
z是[]
**************************************************
x是./2019年集团大学生招聘\公司A
y是[]
z是['A公司2019年度接收毕业生公示信息表.xlsx']
**************************************************
x是./2019年集团大学生招聘\公司B
y是[]
z是['B公司2019年度接收高校毕业生信息表\xa0.xls']
**************************************************




注意:os.walk()方法,它可以查询到目录下不同文件夹中的文件。其中,x代表的是文件路径,y代表的是目录下的文件夹,z代表的是目录下的文件。

import pandas as pdimport os#文件路径file_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'#构建新的表格名称new_filename = file_dir + '\\new_file.xls'#找到文件路径下的所有表格名称file_list = os.walk(file_dir)new_list = []for dir_path,dirs,files in file_list:    for file in files:      #重构文件路径        file_path = os.path.join(dir_path,file)        #将excel转换成DataFrame        df = pd.read_excel(file_path)        new_list.append(df)#多个DataFrame合并为一个df = pd.concat(new_list)#写入到一个新excel表中df.to_excel(new_filename,index=False)
import pandas as pd
import os

#文件路径
file_dir = r'C:\Users\Administrator\Desktop\2019年集团大学生招聘'
#构建新的表格名称
new_filename = file_dir + '\\new_file.xls'
#找到文件路径下的所有表格名称
file_list = os.walk(file_dir)
new_list = []

for dir_path,dirs,files in file_list:
    for file in files:
      #重构文件路径
        file_path = os.path.join(dir_path,file)
        #将excel转换成DataFrame
        df = pd.read_excel(file_path)
        new_list.append(df)

#多个DataFrame合并为一个
df = pd.concat(new_list)
#写入到一个新excel表中
df.to_excel(new_filename,index=False)




结果:

python 多张表合并 python 合并两个表格_pandas excel有多个工作表_07

最后,需要注意,以上只是一个简单的程序,对于数据量不是很大的场景,可以放心使用。但当数据量非常大时,程序还需要进一步优化,因为程序是将所有的数据保存在一个列表中,最后再一次性写入excel表中,这里需要考虑excel版本是否支持大数据量的写入,另外,也要考虑程序资源消耗的问题,内存可能不足。



python 多张表合并 python 合并两个表格_文件路径_08