下面是详细讲解“Pandas实现批量拆分与合并Excel的示例代码”的完整实例教程。
一、需求背景
首先,我们需要明确这个示例的需求背景,即:
- 我们有一个Excel文件,里面有多个工作表;
- 我们需要将每个工作表独立拆分成一个新的Excel文件,并命名为原工作表的名称;
- 然后,我们又需要将这些新生成的Excel文件,批量合并成一个新的Excel文件。
二、实现步骤
接下来,我们开始逐步实现上述需求。
1. 导入必要的库
我们需要先导入Pandas库和OS库:
import pandas as pd
import os
2. 批量拆分Excel文件
我们需要使用Pandas的read_excel()
方法读取原始Excel文件,并使用sheet_names
属性获取所有工作表名。然后,我们可以使用for
循环,逐个读取每个工作表,使用to_excel()
方法以工作表名为文件名,将其拆分成独立的Excel文件。
示例代码如下:
# 读取原始Excel文件
file_path = 'example.xlsx'
df = pd.read_excel(file_path, sheet_name=None)
# 遍历每个工作表,拆分出单独的Excel文件
for sheet_name in df:
file_name = sheet_name + '.xlsx'
df[sheet_name].to_excel(file_name, index=False)
上述代码中,df = pd.read_excel(file_path, sheet_name=None)
将原始Excel文件读取为一个字典类型的DataFrame,其中key为工作表名,value为对应工作表的内容。我们使用for循环遍历这个字典,然后使用to_excel()
方法将每个工作表拆分成一个单独的Excel文件。
3. 批量合并Excel文件
接下来,我们需要将这些新生成的Excel文件批量合并成一个新的Excel文件。我们可以使用Pandas的ExcelWriter()
方法创建一个新的Excel文件,使用for
循环将每个Excel文件的内容读取到一个字典中,并使用to_excel()
方法将这个字典中的内容写入到新建的Excel文件中。
示例代码如下:
# 批量读取拆分后的Excel文件
file_dir = './'
file_list = [f for f in os.listdir(file_dir) if f.endswith('.xlsx')]
# 创建新Excel文件
new_file = 'new_file.xlsx'
writer = pd.ExcelWriter(new_file)
# 遍历每个Excel文件,读取内容并写入新Excel文件
for file_name in file_list:
sheet_name = file_name.split('.')[0]
file_path = os.path.join(file_dir, file_name)
df = pd.read_excel(file_path)
df.to_excel(writer, sheet_name=sheet_name, index=False)
# 保存新Excel文件
writer.save()
上述代码中,file_list = [f for f in os.listdir(file_dir) if f.endswith('.xlsx')]
获取了指定目录下所有后缀名为.xlsx的文件列表。我们使用for循环遍历这个文件列表,然后将每个文件的内容读取出来,并使用to_excel()
方法写入到新建的Excel文件中。
4. 完整代码
下面是合并之前和合并之后的完整代码:
# 导入必要的库
import pandas as pd
import os
# 需要处理的原始Excel文件路径
file_path = 'example.xlsx'
# 读取原始Excel文件
df = pd.read_excel(file_path, sheet_name=None)
# 遍历每个工作表,拆分出单独的Excel文件
for sheet_name in df:
file_name = sheet_name + '.xlsx'
df[sheet_name].to_excel(file_name, index=False)
# 批量读取拆分后的Excel文件
file_dir = './'
file_list = [f for f in os.listdir(file_dir) if f.endswith('.xlsx')]
# 创建新Excel文件
new_file = 'new_file.xlsx'
writer = pd.ExcelWriter(new_file)
# 遍历每个Excel文件,读取内容并写入新Excel文件
for file_name in file_list:
sheet_name = file_name.split('.')[0]
file_path = os.path.join(file_dir, file_name)
df = pd.read_excel(file_path)
df.to_excel(writer, sheet_name=sheet_name, index=False)
# 保存新Excel文件
writer.save()
三、示例说明
1. 批量拆分单个Excel文件
假设我们有一个名为example.xlsx的Excel文件,其中有三个工作表:Sheet1、Sheet2和Sheet3,我们可以使用上述代码将其拆分成三个单独的Excel文件。拆分后,我们可以看到当前目录下多了三个新文件:Sheet1.xlsx、Sheet2.xlsx和Sheet3.xlsx。
2. 批量合并多个Excel文件
假设我们已经将每个工作表的内容拆分成了对应的单独Excel文件,现在我们需要将这些文件批量合并成一个新Excel文件。我们可以将这些拆分后的Excel文件放在同一个目录下,然后使用上述代码读取和合并这些Excel文件。合并后,我们可以看到当前目录下多了一个新文件:new_file.xlsx,其中包含了所有工作表的内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas实现批量拆分与合并Excel的示例代码 - Python技术站