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

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

参考:pandas concat multiple dataframes

在数据分析和数据处理中,经常会遇到需要合并多个数据框(DataFrame)的情况。Pandas 提供了一个非常有用的函数 concat(),它可以帮助我们在不同的轴向上合并多个数据框。本文将详细介绍如何使用 Pandas 的 concat() 函数来合并多个数据框,并提供多个示例代码以帮助理解和实践。

1. Pandas concat() 函数简介

Pandas 的 concat() 函数主要用于沿着一条轴将多个对象堆叠到一起。可以想象成将多个表格按行或列的方向拼接起来。这个函数的基本语法如下:

pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)
  • objs: 需要合并的DataFrame或Series的列表或字典。
  • axis: 默认为0,表示沿着行合并;如果为1,则沿着列合并。
  • join: ‘outer’表示取并集,’inner’表示取交集。
  • ignore_index: 如果为True,则不使用原来的索引。
  • keys: 用于形成多级索引。
  • verify_integrity: 检查新的合并的轴是否包含重复项。
  • sort: 是否在合并时对索引进行排序。

2. 合并两个DataFrame

示例代码 1: 纵向合并

import pandas as pd

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])

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

Output:

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

示例代码 2: 横向合并

import pandas as pd

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函数来合并多个数据框

3. 使用不同的合并方式

示例代码 3: 使用内连接

import pandas as pd

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

df2 = pd.DataFrame({
    'A': ['A1', 'A2', 'A5', 'A7'],
    'B': ['B1', 'B2', 'B5', 'B7']
}, index=[1, 2, 5, 7])

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

Output:

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

示例代码 4: 忽略原索引

import pandas as pd

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函数来合并多个数据框

4. 使用键和多级索引

示例代码 5: 使用键

import pandas as pd

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=['df1', 'df2'])
print(result)

Output:

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

示例代码 6: 使用多级索引

import pandas as pd

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=['df1', 'df2'], levels=[['df1', 'df2']], names=['Source'])
print(result)

Output:

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

5. 检查合并后的数据完整性

示例代码 7: 检查数据完整性

import pandas as pd

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函数来合并多个数据框

6. 排序索引

示例代码 8: 在合并时排序索引

import pandas as pd

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], sort=True)
print(result)

Output:

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

7. 复制数据

示例代码 9: 在合并时避免复制数据

import pandas as pd

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], copy=False)
print(result)

Output:

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

8. 处理具有不同列的DataFrame

示例代码 10: 合并具有不同列的DataFrame

import pandas as pd

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

df2 = pd.DataFrame({
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7']
}, index=[4, 5, 6, 7])

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

Output:

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

9. 使用concat()进行更复杂的合并

示例代码 11: 使用多个键和多级索引进行合并

import pandas as pd

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])

result = pd.concat([df1, df2, df3], keys=['Group1', 'Group2', 'Group3'])
print(result)

Output:

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

示例代码 12: 合并时使用不同的连接方式

import pandas as pd

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

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

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

Output:

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

10. 总结

在本文中,我们详细介绍了如何使用 Pandas 的 concat() 函数来合并多个DataFrame。我们探讨了不同的合并方式,如纵向合并、横向合并、内连接、外连接等,并提供了多个示例代码来展示如何在实际中应用这些技术。通过这些示例代码,我们可以看到 concat() 函数在数据处理中的强大功能和灵活性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程