Pandas快速合并多张excel表格的两种方法

  • Post category:Python

我来详细讲解一下“Pandas快速合并多张Excel表格的两种方法”完整实例教程。

1.背景介绍

在日常的数据分析工作中,我们经常需要合并多个Excel表格,以便进行综合分析。而Pandas是一个强大的数据处理库,能够实现快速、灵活的多张表格合并。

本篇文章将着重介绍两种常见的基于Pandas的表格合并方法:concatmerge

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.xlsxtable2.xlsxtable3.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.xlsxtable2.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表格的两种方法:concatmerge。并且通过两个具体的实例,演示了如何使用这两种方法进行表格合并。希望本文对读者在日常的数据分析工作中有所帮助。