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()