python 合并多个excel文件

合并多个excel文件到一个excel文件,多个excel文件表头一致,命名类似,比如“华东地区销售数据_1.xlsx,华东地区销售数据_2.xlsx,,,”

pandas和os

  • os.path.join()用于路径拼接,如os.path.join(path,filename)=‘C:/Users/lenovo/Desktop/sales/华东地区销售数据_1.xlsx’
  • pd.read_excel(filename)读取Excel文件,返回一个DataFrame对象
  • 列表名.append将DataFrame写入列表
  • pd.concat合并Pandas数据,concat参数axis=0(默认)为上下拼接(纵向),axis=1为左右拼接(横向)

一组数据

只需要合并华东地区销售数据或者只有华东地区销售数据这一组数据

import os
import pandas as pd

data_list = []
path='C:/Users/lenovo/Desktop/sales'
for filename in os.listdir(path):
    #筛选文件名称以name开头以.xlsx结尾
    if filename.startswith("华东地区销售数据") and filename.endswith(".xlsx"):
    #os.path.join()用于路径拼接,如os.path.join(path,filename)='C:/Users/lenovo/Desktop/sales/华东地区销售数据_1.xlsx'
    # pd.read_excel(filename)读取Excel文件,返回一个DataFrame对象
    # 列表名.append将DataFrame写入列表
        data_list.append(pd.read_excel(os.path.join(path,filename)))
# concat合并Pandas数据,concat参数axis=0(默认)为上下拼接(纵向),axis=1为左右拼接(横向)
data_all = pd.concat(data_list)
# 将 DataFrame 保存为 excel 文件
data_all.to_excel("华东地区销售数据"+".xlsx", index=False)

多组数据

比如需要分别合并华东地区销售数据西北地区销售数据,即将华东地区销售数据的多个文件合并为命名为华东地区销售数据.xlsx,将西北地区销售数据的多个文件合并为命名为西北地区销售数据.xlsx

import os
import pandas as pd

name_list = ["华东地区销售数据","西北地区销售数据"] #需要合并的数据组
data_list = []
path='C:/Users/lenovo/Desktop/sales'
for name in name_list:#遍历数据组名称列表
    for filename in os.listdir(path):
    	#筛选文件名称以name开头以.xlsx结尾
        if filename.startswith(name) and filename.endswith(".xlsx"):
        	#os.path.join()用于路径拼接,如os.path.join(path,filename)='C:/Users/lenovo/Desktop/sales/华东地区销售数据_1.xlsx'
            # pd.read_excel(filename)读取Excel文件,返回一个DataFrame对象
            # 列表名.append将DataFrame写入列表
            data_list.append(pd.read_excel(os.path.join(path,filename)))
        # concat合并Pandas数据,concat参数axis=0(默认)为上下拼接(纵向),axis=1为左右拼接(横向)
        data_all = pd.concat(data_list)
        # 将 DataFrame 保存为 excel 文件
        data_all.to_excel(name+".xlsx", index=False)
    print(name+"!")

glob和pandas

glob用来匹配路径文件名

glob通配符

*匹配0个或者任意多个字符
**匹配所有文件,目录,子目录和子目录里面的文件
?匹配一个字符
[]匹配指定范围内的字符,如[1-9]匹配1至9内的字符
[!]匹配不在指定范文内的字符

glob.glob

返回列表

#匹配'./test_dir/*路径下的所有目录和文件,并返回路径列表
path_list = glob.glob('./test_dir/*') 
#匹配./test_dir/路径下含有的所有.txt文件
path_list1 = glob.glob('./test_dir/*.txt')
#遍历在当前路径下包含所有子目录的所有的.py文件:
glob.glob('**/*.py', recursive=True)
['walktree.py', 'udpserver.py', 'udpclient.py', 'auto_mysql_dump.py', 'acme-tiny/acme_tiny.py', 'acme-tiny/setup.py', 'acme-tiny/tests/server.py', 'acme-tiny/tests/__init__.py', 'acme-tiny/tests/monkey.py', 'acme-tiny/tests/test_install.py', 'acme-tiny/tests/test_module.py']

glob.iglob

glob函数一次性的返回了所有的结果,而iglob函数是一个一个的返回结果。

for fname in glob.iglob("./tmp/*.py"):
    print(fname)

一组数据

import pandas as pd
import glob
data_list = []
for filename in glob.glob('C:/Users/lenovo/Desktop/jd/华东地区销售数据*.xlsx'):
    data_list.append(pd.read_excel(files[0]))
data_all = pd.concat(data_list)
# 将 DataFrame 保存为 excel 文件
data_all.to_excel("华东地区销售数据.xlsx", index=False)

多组数据

import pandas as pd
import glob
name_list = ["华东地区销售数据","西北地区销售数据"]
data_list = []
path='C:/Users/lenovo/Desktop/sales/'
for name in name_list:
    for filename in glob.glob(path+name+'*.xlsx'):
        data_list.append(pd.read_excel(filename))
        data_all = pd.concat(data_list)
# 将 DataFrame 保存为 excel 文件
    data_all.to_excel(name+".xlsx", index=False)
  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值