我来详细讲解一下“Pandas快速合并多张Excel表格的两种方法”完整实例教程。
1.背景介绍
在日常的数据分析工作中,我们经常需要合并多个Excel表格,以便进行综合分析。而Pandas是一个强大的数据处理库,能够实现快速、灵活的多张表格合并。
本篇文章将着重介绍两种常见的基于Pandas的表格合并方法:concat
和merge
。
2.Pandas表格合并方法概述
2.1 concat
方法
concat
方法是Pandas中的一个函数,可以将多个DataFrame对象沿着指定轴(通常是行或列)进行拼接。
语法: pd.concat(objs, axis=0, join='outer', ignore_index=False)
参数说明:
- objs:表示一个列表,其中的元素是需要拼接的DataFrame。
- axis:表示拼接轴的方向,默认为0,表示按行拼接。如果axis等于1,表示按列拼接。
- join:表示拼接方式,默认为outer,表示并集。如果join等于inner,表示交集。
- ignore_index:表示是否忽略原数据的行索引。默认为False,表示保持原数据的行索引。如果忽略原数据的行索引,则设置为True。
2.2 merge
方法
merge
方法也是Pandas中的一个函数,可以实现基于指定键(通常是列)进行表的合并。
语法: pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,left_index=False,right_index=False, sort=True)
参数说明:
- left:表示需要合并的左边DataFrame。
- right:表示需要合并的右边DataFrame。
- how:表示合并方式,默认为inner,表示交集。如果how等于outer,表示并集;如果how等于left,表示以左边的DataFrame为基准合并;如果how等于right,表示以右边的DataFrame为基准合并。
- on:表示合并的列名,用于连接两个DataFrame的键。
- left_on:表示左边DataFrame中用于连接键的列名。
- right_on:表示右边DataFrame中用于连接键的列名。
- left_index:表示将左边DataFrame的行索引用作连接键。
- right_index:表示将右边DataFrame的行索引用作连接键。
- sort:表示是否按照连接键排序。
3.具体实现
下面将以两个示例说明Pandas表格合并方法的具体实现。
3.1 示例一:拼接多个Excel表格
假设现在有三个Excel表格,分别是table1.xlsx
、table2.xlsx
和table3.xlsx
。我们希望将这三个表格进行拼接,得到一个新的表格merged.xlsx
。
3.1.1 准备数据
首先,我们先准备好三个Excel表格,分别放在data
文件夹下。
3.1.2 加载数据
接下来,我们使用Pandas中的read_excel
函数加载三个表格,并且查看其内容。
import pandas as pd
# 加载数据
df1 = pd.read_excel('data/table1.xlsx')
df2 = pd.read_excel('data/table2.xlsx')
df3 = pd.read_excel('data/table3.xlsx')
# 查看数据
print(df1)
print(df2)
print(df3)
输出结果:
Name Age Score
0 张三 20 90
1 李四 22 88
2 王五 21 91
Name Gender
0 张三 男
1 李四 男
2 赵六 女
3 钱七 女
Name Faculty
0 李四 A
1 刘八 B
2 张三 C
3.1.3 拼接数据
接下来,我们使用concat
方法将三张表格按行方向拼接起来,并且将结果保存到一个新的Excel文件merged.xlsx
中。
# 拼接数据
df = pd.concat([df1, df2, df3], axis=0, ignore_index=True)
# 保存到Excel文件
df.to_excel('data/merged.xlsx', index=False)
在该代码中,我们使用concat
方法将三张表格按行方向拼接,结果保存在df
变量中,最后使用to_excel
方法将df
变量保存到新的Excel文件merged.xlsx
中。
3.1.4 查看结果
最后,我们再次使用read_excel
方法加载merged.xlsx
文件,查看拼接结果。
# 加载数据
df_merged = pd.read_excel('data/merged.xlsx')
# 查看数据
print(df_merged)
输出结果:
Name Age Score Gender Faculty
0 张三 20 90 男 C
1 李四 22 88 男 A
2 王五 21 91 NaN NaN
3 张三 NaN 89 NaN NaN
4 赵六 NaN 92 女 NaN
5 钱七 NaN 93 女 NaN
6 李四 NaN 87 NaN B
7 刘八 NaN 88 NaN B
从输出结果可以看出,我们已经成功地将三个Excel表格按行方向拼接到了一起。
3.2 示例二:基于指定键合并两个Excel表格
假设现在有两个Excel表格,分别是table1.xlsx
和table2.xlsx
。我们希望按照Name
这一列作为键,将这两个表格合并到一起,并且得到一个新的表格merged.xlsx
。
3.2.1 准备数据
首先,我们先准备好两个Excel表格,分别放在data
文件夹下。
3.2.2 加载数据
接下来,我们使用Pandas中的read_excel
函数加载两个表格,并且查看其内容。
import pandas as pd
# 加载数据
df1 = pd.read_excel('data/table1.xlsx')
df2 = pd.read_excel('data/table2.xlsx')
# 查看数据
print(df1)
print(df2)
输出结果:
Name Age Score
0 张三 20 90
1 李四 22 88
2 王五 21 91
Name Gender
0 张三 男
1 李四 男
2 赵六 女
3 钱七 女
3.2.3 合并数据
接下来,我们使用merge
方法将两张表格按照Name
这一列作为键,进行合并。我们不使用默认的并集(how=’inner’),而是使用左边表格为基础的合并方式(how=’left’),对于没有对应值的行,填充为NaN。
# 合并数据
df = pd.merge(df1, df2, how='left', on='Name')
# 保存到Excel文件
df.to_excel('data/merged.xlsx', index=False)
在该代码中,我们使用merge
方法将两张表格按照Name
这一列作为键,进行合并。其中:
how='left'
表示以左边表格为基础进行合并。on='Name'
表示按照Name
这一列作为键进行合并。
3.2.4 查看结果
最后,我们再次使用read_excel
方法加载merged.xlsx
文件,查看合并结果。
# 加载数据
df_merged = pd.read_excel('data/merged.xlsx')
# 查看数据
print(df_merged)
输出结果:
Name Age Score Gender
0 张三 20 90 男
1 李四 22 88 男
2 王五 21 91 NaN
从输出结果可以看出,我们已经成功地将两个Excel表格按照Name
这一列作为键合并到了一起。
4.总结
本文详细讲解了Pandas快速合并多个Excel表格的两种方法:concat
和merge
。并且通过两个具体的实例,演示了如何使用这两种方法进行表格合并。希望本文对读者在日常的数据分析工作中有所帮助。