
使用Python进行Excel数据的拆分和整合
1. 有一些话要说
我们在日常工作中,经常会遇到如下场景:
1.将一个已下发的固定模板Excel文件回收合并;
2.将一个Excel文件拆成多份,进行协同作业;
有些朋友可能会说,现在的线上表格工具功能已经很完善了,不需要再用这种老办法,将文件发来发去。也有些朋友可能会说,我使用VBA脚本或Power Query等等方法都可以解决,不需要使用到Python。
但确实会存在有人不会用这些工具,以及过去的很多方法或复杂或局限或效率低下,所以就有了本片文章。
在你看到的时候,可能会有部分需求场景没有覆盖到你,本篇文章也会根据评论区的建议进行长期更新,废话已经很多了,我们马上进入正题。
*本文并不会告诉你如何使用python,请在有基础的python知识前提下进行学习
2. 涉及到的库:
pandas、openpyxl、pathlib
3. 批量合并Excel文件:
举例:
假设在data
路径下有多个Excel文件:file1.xlsx
、file2.xlsx
、file3.xlsx
,每个文件的数据结构(即表头)都相同,我们要将它们合并为一个名为combined.xlsx
的文件。
# 批处理合并Excel文件
import pandas as pd
from pathlib import Path
# 获取所有excel文件的路径
file_paths = Path('data').glob('*.xlsx')
# 读取并合并所有excel文件
data_frames = [pd.read_excel(file,engine='openpyxl') for file in file_paths]
combined_df = pd.concat(data_frames, ignore_index=True)
# 保存合并后的DataFrame到一个新的Excel文件
combined_df.to_excel('combined.xlsx',index=False)
文件的位置路径需要根据实际情况修改哦,稍微讲解一下路径书写的格式。
# 绝对路径
path = 'C:/Users/username/Documents/file.txt'
# 相对路径
path = './Documents/file.txt'
4. 批量拆分Excel文件:
4.1 按行数进行拆分Excel
举例:
将一个大Excel文件large_file.xlsx
拆分为每个包含200行数据的小文件,名字为chunk_{i + 1}.excel
,i+1为具体的拆分行数。
# 批处理按照行数拆分Excel文件
import pandas as pd
# 读取大Excel文件
df = pd.read_excel('large_file.xlsx', engine='openpyxl')
# 拆分数据
chunk_size = 200
num_chunks = (len(df) + chunk_size - 1) // chunk_size
for i in range(num_chunks):
start_row = i * chunk_size
end_row = min((i + 1) * chunk_size, len(df))
chunk_df = df.iloc[start_row: end_row]
# 保存拆分后DataFrame到新的Excel文件
chunk_df.to_excel(f'chunk_{i + 1}.excel', index=False)
4.2 按列进行拆分Excel
举例:
将一个大Excel文件original.xlsx
,根据column_to_split_by
列里的内容进行拆分,最后以split_{value}
为名称进行命名保存。
# 批处理按列内容数拆分Excel文件
import pandas as pd
# 读取大Excel文件
original_file = 'original.xlsx'
sheet_name = 'Sheet1' # 假设你要拆分的工作表名称为'Sheet1'
df = pd.read_excel(original_file, sheet_name= sheet_name)
# 选择你要根据哪一列的唯一值来拆分工作表
split_column = 'column_to_split_by' # 替换为你的列名
unique_values = df[split_column].unique()
# 遍历唯一值并保存每个子DataFrame到新的Excel文件
for value in unique_values:
# 筛选数据
sub_df = df[df[split_column] == value]
# 构造新的文件名
new_file = f'split_{value}.xlsx'
# 写入新的Excel文件
with pd.ExcelWriter(new_file, engine='openpyxl') as writer:
sub_df.to_excel(writer, index=False, sheet_name=sheet_name)
print(f'Split into {len(unique_values)} files.')
以上内容基本满足了,日常对Excel合并和拆分的需求,希望能够实际帮助的搜索到本文的朋友。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 刘叨叨DD
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果