Pandas中垂直合并两个DataFrame

Pandas中垂直合并两个DataFrame

参考:pandas concat two dataframes vertically

在数据处理和分析中,经常需要将多个数据集合并为一个大的数据集。Pandas库提供了多种方式来合并数据,其中concat()函数是一个非常强大的工具,可以用来垂直或水平地合并多个DataFrame。本文将详细介绍如何使用Pandas的concat()函数来垂直合并两个DataFrame,并提供多个示例代码以帮助理解和实践。

基本概念

在Pandas中,concat()函数主要用于沿着一条轴将多个对象堆叠到一起。具体到垂直合并,即沿着索引轴(axis=0)将两个或多个DataFrame堆叠起来。这种操作通常用于在数据集末尾添加更多的行。

函数语法

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: 布尔值,默认为False。如果为True,则不使用原来的索引值。
  • keys: 用于形成多级索引,指定一个序列来标识各个DataFrame。
  • verify_integrity: 检查新的合并的DataFrame是否包含重复的索引。
  • sort: 是否在合并时排序非连接键。

示例代码

以下是使用Pandas进行垂直合并DataFrame的示例代码。

示例1:基本垂直合并

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])
print(result)

Output:

Pandas中垂直合并两个DataFrame

示例2:忽略原索引

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中垂直合并两个DataFrame

示例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': ['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中垂直合并两个DataFrame

示例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'],
    'C': ['C4', 'C5', 'C6', 'C7']
}, index=[4, 5, 6, 7])

# 内连接合并,只保留共有的列
result = pd.concat([df1, df2], join='inner')
print(result)

Output:

Pandas中垂直合并两个DataFrame

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

# 合并时检查索引完整性
result = pd.concat([df1, df2], verify_integrity=True)
print(result)

Output:

Pandas中垂直合并两个DataFrame

以上示例展示了如何使用Pandas的concat()函数来垂直合并两个DataFrame。每个示例都是独立的,可以直接运行以观察其效果。通过这些示例,可以更好地理解如何在实际应用中处理和合并数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程