下面我就来详细讲解“Python pandas实现excel工作表合并功能”的完整实例教程。
1.准备工作
在开始本教程前,需要安装以下几个库:
- pandas
- xlrd
- openpyxl
可以在终端或命令行中使用以下命令安装:
pip install pandas xlrd openpyxl
2.读取Excel数据
首先需要读取所有要合并的Excel文件中的数据。我们可以使用pandas中的read_excel
函数来读取Excel数据。以下示例代码可以将file_path
路径中的Excel文件读取为pandas的数据帧:
import pandas as pd
df = pd.read_excel(file_path, sheet_name='Sheet1')
sheet_name
参数表示要读取的工作表名称。如果文件中有多个工作表,可以使用工作表的名称或序号来指定要读取的工作表。
3.合并数据
读取了所有的Excel数据后,我们需要将它们合并成一个数据表。pandas提供了多种合并数据的方法,比如concat
和merge
。在本例中,我们将使用concat
函数来将多个数据表垂直合并成一个数据表。以下是示例代码:
import pandas as pd
# 读取所有数据表
df1 = pd.read_excel(file1_path, sheet_name='Sheet1')
df2 = pd.read_excel(file2_path, sheet_name='Sheet1')
df3 = pd.read_excel(file3_path, sheet_name='Sheet1')
# 合并数据表
result = pd.concat([df1, df2, df3], ignore_index=True)
concat
函数中的参数[df1, df2, df3]
表示要合并的数据表列表。ignore_index=True
表示重新设置索引,以便在所有数据表行上创建唯一的行标签。
4.保存数据
最后一步是将合并的数据保存为Excel文件。pandas中的to_excel
函数可以将数据帧保存为Excel文件。以下是示例代码:
import pandas as pd
# 读取所有数据表
df1 = pd.read_excel(file1_path, sheet_name='Sheet1')
df2 = pd.read_excel(file2_path, sheet_name='Sheet1')
df3 = pd.read_excel(file3_path, sheet_name='Sheet1')
# 合并数据表
result = pd.concat([df1, df2, df3], ignore_index=True)
# 将合并后的数据保存为Excel文件
result.to_excel(output_file_path, index=False)
在以上示例代码中,to_excel
函数的index=False
参数表示不要将行标签保存到Excel文件中。
示例说明
示例1:合并在同一目录下的多个Excel文件
假设在同一目录下有三个Excel文件file1.xlsx、file2.xlsx、file3.xlsx,且它们中的Sheet1工作表具有相同的列名和列顺序。
以下是示例代码:
import pandas as pd
import os
# 获取要合并的所有Excel文件的文件名
file_names = [f for f in os.listdir('.') if f.endswith('.xlsx')]
# 读取所有Excel数据
dfs = []
for file_name in file_names:
dfs.append(pd.read_excel(file_name, sheet_name='Sheet1'))
# 合并所有数据
result = pd.concat(dfs, ignore_index=True)
# 保存合并后的数据为Excel文件
result.to_excel('output.xlsx', index=False)
print('合并完成!')
以上代码中,os.listdir('.')
可以获取当前目录下的所有文件名,并使用列表推导式[f for f in os.listdir('.') if f.endswith('.xlsx')]
筛选出结束为.xlsx的文件。output.xlsx
为合并后的Excel文件名。
示例2:合并同一文件夹下的多个不同格式Excel文件
假设同一文件夹下有三个不同格式的Excel文件file1.xlsx、file2.csv、file3.xls,且它们的Sheet1工作表具有相同的列名和列顺序。
以下是示例代码:
import pandas as pd
import os
# 获取要合并的所有Excel文件的文件名
file_names = [f for f in os.listdir('.') if f.endswith(('.xlsx', '.csv', '.xls'))]
# 读取所有Excel数据
dfs = []
for file_name in file_names:
if file_name.endswith('.csv'):
dfs.append(pd.read_csv(file_name))
else:
dfs.append(pd.read_excel(file_name, sheet_name='Sheet1'))
# 合并所有数据
result = pd.concat(dfs, ignore_index=True)
# 保存合并后的数据为Excel文件
result.to_excel('output.xlsx', index=False)
print('合并完成!')
以上示例代码同样使用列表推导式筛选出需要合并的文件,并通过if-else语句读取csv和excel文件。结果是将不同格式的文件合并为一个Excel文件output.xlsx。
希望以上说明能够帮助您学习和使用Python pandas实现excel工作表合并功能。如有任何问题,欢迎随时提问!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python pandas实现excel工作表合并功能详解 - Python技术站