如何使用 Pandas 的concat 函数来合并数据

如何使用 Pandas 的concat 函数来合并数据

参考:pandas concat dataframe

Pandas 是一个强大的 Python 数据分析库,它提供了大量的功能来处理和分析数据。其中,concat() 函数是一个非常有用的工具,它允许用户沿着一定的轴将多个 DataFrame 或 Series 对象合并成一个新的 DataFrame。本文将详细介绍如何使用 Pandasconcat() 函数来合并数据,并提供多个示例代码来展示其用法。

1. Pandas Concat 基础

pandas.concat() 可以将两个或多个 pandas 对象合并成一个。它主要有几个参数:
objs: 一个列表或字典,里面包含了要合并的 pandas 对象。
axis: 合并的轴向,默认为 0,即纵向合并。设置为 1 时,进行横向合并。
join: 指定如何处理不同对象的索引。默认为 ‘outer’,即取并集;’inner’ 则是取交集。
ignore_index: 布尔值,默认为 False。如果为 True,则不使用原来的索索引,而是创建一个新的整数索引。

示例代码 1:基础的纵向合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "B": ["B2", "B3"]
}, index=[2, 3])

# 纵向合并 DataFrame
result = pd.concat([df1, df2])
print(result)

Output:

如何使用 Pandas 的concat 函数来合并数据

示例代码 2:基础的横向合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "C": ["C0", "C1"],
    "D": ["D0", "D1"]
})

# 横向合并 DataFrame
result = pd.concat([df1, df2], axis=1)
print(result)

Output:

如何使用 Pandas 的concat 函数来合并数据

2. 处理索引

在使用 concat() 函数时,处理索引是一个重要的方面。如果不同的 DataFrame 有重叠的索引,可能会导致数据的不一致。可以通过设置 ignore_index 参数来避免这种情况。

示例代码 3:忽略原索引进行合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "B": ["B2", "B3"]
})

# 忽略原索引,创建新的整数索引
result = pd.concat([df1, df2], ignore_index=True)
print(result)

Output:

如何使用 Pandas 的concat 函数来合并数据

示例代码 4:添加多层索引

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "B": ["B2", "B3"]
})

# 添加多层索引
result = pd.concat([df1, df2], keys=["df1", "df2"])
print(result)

Output:

如何使用 Pandas 的concat 函数来合并数据

3. 处理列不一致的情况

当合并的 DataFrame 列不一致时,concat() 函数提供了多种处理方式。通过 join 参数可以控制如何合并列。

示例代码 5:内连接合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "C": ["C2", "C3"]
})

# 只合并共有的列
result = pd.concat([df1, df2], join="inner")
print(result)

Output:

如何使用 Pandas 的concat 函数来合并数据

示例代码 6:外连接合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "C": ["C2", "C3"]
})

# 合并所有的列,不存在的填充 NaN
result = pd.concat([df1, df2], join="outer")
print(result)

Output:

如何使用 Pandas 的concat 函数来合并数据

4. 更复杂的合并场景

在实际应用中,我们可能会遇到更复杂的数据合并需求,比如合并多个 DataFrame,处理多层索引等。

示例代码 7:合并多个 DataFrame

import pandas as pd

# 创建三个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "B": ["B2", "B3"]
})

df3 = pd.DataFrame({
    "A": ["A4", "A5"],
    "B": ["B4", "B5"]
})

# 合并三个 DataFrame
result = pd.concat([df1, df2, df3])
print(result)

Output:

如何使用 Pandas 的concat 函数来合并数据

示例代码 8:合并时使用不同的 keys

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "B": ["B2", "B3"]
})

# 使用不同的 keys 进行合并,便于区分来源
result = pd.concat([df1, df2], keys=["来源1", "来源2"])
print(result)

Output:

如何使用 Pandas 的concat 函数来合并数据

5. 总结

Pandas 的 concat() 函数是一个非常强大的工具,可以帮助我们在不同的场景下合并数据。通过正确使用 axis, join, ignore_index 等参数,我们可以处理各种复杂的数据合并需求。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程