Pandas concat 示例

Pandas concat 示例

参考:pandas concat example

在数据分析和数据科学领域,pandas 是 Python 中一个非常重要的库,它提供了大量的功能来处理和分析数据。其中,concat() 函数是一个非常有用的工具,它允许用户沿着一定的轴将多个 pandas 对象合并在一起。本文将详细介绍 concat() 函数的使用方法,并通过多个示例展示如何在实际中应用这一函数。

1. pandas concat() 函数简介

concat() 函数主要用于将两个或多个 pandas 数据结构(如 Series 和 DataFrame)沿着特定的轴进行连接。该函数的语法如下:

pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)

其中,最重要的参数包括:
objs:一个序列或映射,这里是要连接的 pandas 数据结构。
axis:默认为 0,表示沿着索引(行)方向进行连接。如果设为 1,则沿着列方向连接。
join:可以是 ‘inner’ 或 ‘outer’,表示连接的方式,’outer’ 为并集,’inner’ 为交集。
ignore_index:如果为 True,则不使用连接轴上的索引值,而是创建一个新的范围索引。

2. 示例代码

示例 1:基本的 DataFrame 连接

import pandas as pd

# 创建两个 DataFrame
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])

# 使用 concat 连接 DataFrame
result = pd.concat([df1, df2])
print(result)

Output:

Pandas concat 示例

示例 2:沿列方向连接 DataFrame

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

# 使用 concat 连接 DataFrame,沿列方向
result = pd.concat([df1, df2], axis=1)
print(result)

Output:

Pandas concat 示例

示例 3:使用内连接

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A2', 'A3', 'A6', 'A7'],
    'B': ['B2', 'B3', 'B6', 'B7'],
    'C': ['C2', 'C3', 'C6', 'C7']
}, index=[2, 3, 6, 7])

# 使用内连接
result = pd.concat([df1, df2], join='inner')
print(result)

Output:

Pandas concat 示例

示例 4:忽略原有索引,创建新索引

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7']
}, index=[4, 5, 6, 7])

# 忽略原有索引
result = pd.concat([df1, df2], ignore_index=True)
print(result)

Output:

Pandas concat 示例

示例 5:使用多层索引

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7']
}, index=[4, 5, 6, 7])

# 使用 keys 创建多层索引
result = pd.concat([df1, df2], keys=['df1', 'df2'])
print(result)

Output:

Pandas concat 示例

示例 6:连接时排序列

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7']
}, index=[4, 5, 6, 7])

# 连接时排序列
result = pd.concat([df1, df2], sort=True)
print(result)

Output:

Pandas concat 示例

示例 7:验证连接的完整性

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7']
}, index=[4, 5, 6, 7])

# 验证连接的完整性
result = pd.concat([df1, df2], verify_integrity=True)
print(result)

Output:

Pandas concat 示例

示例 8:连接多个 DataFrame

import pandas as pd

# 创建三个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7']
}, index=[4, 5, 6, 7])

df3 = pd.DataFrame({
    'A': ['A8', 'A9', 'A10', 'A11'],
    'B': ['B8', 'B9', 'B10', 'B11']
}, index=[8, 9, 10, 11])

# 连接多个 DataFrame
result = pd.concat([df1, df2, df3])
print(result)

Output:

Pandas concat 示例

示例 9:使用不同的连接方式

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A2', 'A3', 'A6', 'A7'],
    'B': ['B2', 'B3', 'B6', 'B7'],
    'C': ['C2', 'C3', 'C6', 'C7']
}, index=[2, 3, 6, 7])

# 使用外连接
result_outer = pd.concat([df1, df2], join='outer')

# 使用内连接
result_inner = pd.concat([df1, df2], join='inner')
print(result_inner)

Output:

Pandas concat 示例

示例 10:连接时使用自定义索引名称

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7']
}, index=[4, 5, 6, 7])

# 使用自定义索引名称
result = pd.concat([df1, df2], keys=['Group1', 'Group2'])
print(result)

Output:

Pandas concat 示例

示例 11:连接时保留原有列

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

# 连接时保留原有列
result = pd.concat([df1, df2], axis=1)
print(result)

Output:

Pandas concat 示例

示例 12:处理重复列名

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7']
}, index=[4, 5, 6, 7])

# 处理重复列名
result = pd.concat([df1, df2]).rename(columns={'A': 'A_new', 'B': 'B_new'})
print(result)

Output:

Pandas concat 示例

示例 13:连接时使用不同的数据类型

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [0, 1, 2, 3],
    'B': [0.1, 0.2, 0.3, 0.4]
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7']
}, index=[4, 5, 6, 7])

# 连接时使用不同的数据类型
result = pd.concat([df1, df2])
print(result)

Output:

Pandas concat 示例

示例 14:连接时包含重复索引

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A2', 'A3', 'A6', 'A7'],
    'B': ['B2', 'B3', 'B6', 'B7']
}, index=[2, 3, 6, 7])

# 连接时包含重复索引
result = pd.concat([df1, df2], verify_integrity=False)
print(result)

Output:

Pandas concat 示例

示例 15:连接多个具有不同列的 DataFrame

import pandas as pd

# 创建三个 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

df3 = pd.DataFrame({
    'E': ['E0', 'E1', 'E2', 'E3'],
    'F': ['F0', 'F1', 'F2', 'F3']
}, index=[0, 1, 2, 3])

# 连接多个具有不同列的 DataFrame
result = pd.concat([df1, df2, df3], axis=1)
print(result)

Output:

Pandas concat 示例

以上示例展示了如何使用 pandas 的 concat() 函数来处理不同的数据连接需求。通过这些示例,可以看到 concat() 函数在数据处理中的灵活性和强大功能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程