python合并多个excel为一个excel的不同sheet和将一个excel分解为不同的sheet

python合并多个excel为一个excel的不同sheet和将一个excel分解为不同的sheet


日常处理excel文件很繁琐,尤其是将多个excel合并为一个和将一个excel分解为多个时,重复操作,枯燥且耗时,下面教你一招轻松解决。

一、合并多个excel为一个excel的不同sheet
(一)全部合并
import pandas as pd
import os

# 结果文件
result = pd.ExcelWriter(r'F:\Desktop\高频数据.xls')
    
# 获取表格列表的文件路径
origin_file_list = os.listdir(r'F:\Desktop\数据')   

# 循环遍历表格
for i in origin_file_list:
    #获取文件夹下的文件名
    excel_file_name = i
    #拼接每个文件的路径
    file_path =r'F:\Desktop\数据\%s' % i
    # 读取文件内容
    # 跳过0行
    content = pd.read_excel(file_path, skiprows=[0])
    # 有缺陷,会扩展列名
    # content = pd.read_excel(file_path)
    # 重新定义sheet名字
    sheet_name = i[:len(i) - 5]
    # 转换为同一个表多个sheet
    content.to_excel(result, sheet_name, index=False)
    # content.to_excel()
result.save()  
(二)部分合并
import glob

# 结果文件
result = pd.ExcelWriter(r'F:\Desktop\高频数据.xls')
##固定路径下的模糊匹配
for name in glob.glob(r'F:\Desktop\数据\*年.xlsx'):
    print (name) 
    #模糊匹配到的文件名
    excel_file_name = str(name).split('\\')[-1]
    print(excel_file_name)
    #拼接每个文件的路径
    file_path = r'F:\Desktop\数据\%s' % excel_file_name
    print(file_path)
    # 读取文件内容
    # 跳过0行
#     content = pd.read_excel(file_path, skiprows=[0])
     
    content = pd.read_excel(file_path)
    # 重新定义sheet名字
    sheet_name = excel_file_name[:len(excel_file_name) - 5]
    # 转换为同一个表多个sheet
    content.to_excel(result, sheet_name, index=False)
    # content.to_excel()
result.save()  
二、将一个excel分解为多个
import pandas as pd
import numpy as np
# 读取文件
data = pd.read_excel('F:/Desktop/数据.xlsx')

# 结果文件
result = pd.ExcelWriter(r'F:/Desktop/高频数据.xlsx')
# 选取分类的列,这里为 年份
Year = np.unique(data['年份'])

# 写入excel,并保存
for i in Year: 
    I = data[data['年份'] ==  i]
#     删除某列
    del I['年份']
    # 重新定义sheet名字
    sheet_name = i
    # 转换为同一个表多个sheet
    I.to_excel(result, sheet_name, index=False)
result.save()
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值