如何使用Concat联合Pandas数据框架

  • Post category:Python

使用Concat联合Pandas数据框架是将多个表格数据组合在一起的常用方法,在本文中,我将提供一份完整的攻略,详细讲解如何使用Concat联合Pandas数据框架。

准备工作

在开始之前,我们需要导入Pandas库。可以使用以下命令进行导入:

import pandas as pd

为了演示Concat联合数据框架的用法,我们首先需要创建两个Pandas数据框架,也可以从外部读取数据。我们将先创建两个数据框架并将其命名为df1和df2。

下面是我们创建数据框架的示例代码:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                   index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
                    'B': ['B4', 'B5', 'B6', 'B7'],
                    'C': ['C4', 'C5', 'C6', 'C7'],
                    'D': ['D4', 'D5', 'D6', 'D7']},
                   index=[4, 5, 6, 7])

df1 和 df2 的内容如下:

df1:
    A   B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
2   A2  B2  C2  D2
3   A3  B3  C3  D3

df2:
    A   B   C   D
4   A4  B4  C4  D4
5   A5  B5  C5  D5
6   A6  B6  C6  D6
7   A7  B7  C7  D7

使用concat()联合数据框架

使用 Pandas 的 concat() 函数,可以将两个或多个数据框组合在一起,并根据特定的轴进行合并。

下面是concat()函数的基本语法:

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False)

参数说明:

  • objs:一个列表或字典,包含要联合的数据框。轴参数指定了联合的方向。
  • axis:指定联合的轴,0表示竖直方向,1表示水平方向。
  • join:联合方式,‘outer’表示并集,‘inner’表示交集。
  • ignore_index:合并数据时是否忽略原来数据的索引。
  • keys:可以为每个输入数据框创建一个层次化索引,用于识别每个数据框的来源。
  • verify_integrity:检查新的组合数据框的索引是否有重复。如果设置为“True”,则如果有重复将引发异常。

下面是我们使用 concat() 函数将两个数据框组合在一起的示例代码。我们将按行“axis=0”进行组合,因此函数将会自动检测并合并两个数据框的列。

代码:

result = pd.concat([df1, df2])
print(result)

输出结果:

    A   B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
2   A2  B2  C2  D2
3   A3  B3  C3  D3
4   A4  B4  C4  D4
5   A5  B5  C5  D5
6   A6  B6  C6  D6
7   A7  B7  C7  D7

可以看到,两个数据框被拼接在一起,行索引从0到7。

将多个数据框组合在一起

在许多情况下,我们需要将多个数据框组合在一起。可以通过一次性传递多个数据框的列表将多个数据框合并。下面是一个示例,将df1、df2和df3三个数据框按行组合在一起。

代码:

df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
                    'B': ['B8', 'B9', 'B10', 'B11'],
                    'C': ['C8', 'C9', 'C10', 'C11'],
                    'D': ['D8', 'D9', 'D10', 'D11']},
                   index=[8, 9, 10, 11])

result = pd.concat([df1, df2, df3])

print(result)

输出结果:

    A   B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
2   A2  B2  C2  D2
3   A3  B3  C3  D3
4   A4  B4  C4  D4
5   A5  B5  C5  D5
6   A6  B6  C6  D6
7   A7  B7  C7  D7
8   A8  B8  C8  D8
9   A9  B9  C9  D9
10  A10 B10 C10 D10
11  A11 B11 C11 D11

使用键来识别数据

使用 concat() 函数,还可以为每个输入数据框创建一个层次化索引,用于识别每个数据框的来源。

下面是一个示例,将 df1、df2 和 df3 按水平轴(列)组合在一起,并通过设置 keys 参数指定每个数据框的名称。

代码:

result = pd.concat([df1, df2, df3], keys=['x', 'y', 'z'])

print(result)

输出结果:

       A    B   C   D
x 0 A0  B0  C0  D0
  1 A1  B1  C1  D1
  2 A2  B2  C2  D2
  3 A3  B3  C3  D3
y 4 A4  B4  C4  D4
  5 A5  B5  C5  D5
  6 A6  B6  C6  D6
  7 A7  B7  C7  D7
z 8 A8  B8  C8  D8
  9 A9  B9  C9  D9
  10    A10 B10 C10 D10
  11    A11 B11 C11 D11

连接方式

concat()函数的 join 参数可以设置为“inner”或“outer”,以指定使用的连接方式。默认情况下,join 参数设置为 “outer”,表示使用并集。

下面是一个示例,演示命令将 df1 和 df2 数据框组合在一起时,使用交集连接。

代码:

result = pd.concat([df1, df2], join='inner')

print(result)

处理结果:

    A   B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
2   A2  B2  C2  D2
3   A3  B3  C3  D3
4   A4  B4  C4  D4
5   A5  B5  C5  D5
6   A6  B6  C6  D6
7   A7  B7  C7  D7

检查索引

如果合并的数据框具有重复的索引,则可以设置 verify_integrity 参数检查。如果有重复值,则代码会引发 ValueError 异常。

下面是一个示例,演示一种检查索引的方法。

代码:

df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
                    'D': ['D2', 'D3', 'D6', 'D7'],
                    'F': ['F2', 'F3', 'F6', 'F7']},
                   index=[2, 3, 6, 7])

result = pd.concat([df1, df4], axis=1, sort=False, verify_integrity=True)

print(result)

由于数据框df1 和 df4 具有相同的行索引 2 和 3,当 verify_integrity 设为True 时,Pandas 将引发异常:

ValueError: Indexes have overlapping values: [2, 3]

希望本篇攻略能帮助各位顺利使用Concat联合Pandas数据框架完成数据组合工作。