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

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

参考:pandas concat dataframe

在数据处理和分析中,经常需要将多个数据集合并为一个大的数据集。Pandas 是 Python 中一个强大的数据分析工具库,它提供了多种方式来合并数据,其中 concat() 函数是一个非常常用的功能。本文将详细介绍如何使用 Pandas 的 concat() 函数来合并数据框(DataFrame),并提供多个示例代码以帮助理解和应用。

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)

示例代码 1: 基础的 concat 使用

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

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

Output:

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

示例代码 2: 设置不同的 axis

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

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

Output:

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

示例代码 3: 使用 ignore_index 选项

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函数来合并DataFrame

2. 高级用法

示例代码 4: 使用 keys 参数

import pandas as pd

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

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

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

Output:

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

示例代码 5: 使用 join 参数

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=[2, 3, 4, 5])

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

Output:

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

示例代码 6: 使用 verify_integrity 参数

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函数来合并DataFrame

3. 实际应用场景

在实际的数据处理过程中,我们可能会遇到需要从不同的数据源合并数据的情况。例如,可能需要将不同时间段的销售数据合并到一起,或者将不同地区的用户数据进行整合。下面通过几个示例来展示如何在这些情况下使用 concat()

示例代码 7: 合并不同时间段的数据

import pandas as pd

# 创建两个 DataFrame,代表不同时间段的数据
df1 = pd.DataFrame({
    'Date': ['2021-01-01', '2021-01-02', '2021-01-03'],
    'Sales': [200, 150, 180]
})

df2 = pd.DataFrame({
    'Date': ['2021-01-04', '2021-01-05', '2021-01-06'],
    'Sales': [210, 215, 205]
})

# 合并数据
result = pd.concat([df1, df2])
print(result)

Output:

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

示例代码 8: 合并不同地区的用户数据

import pandas as pd

# 创建两个 DataFrame,代表不同地区的用户数据
df1 = pd.DataFrame({
    'User ID': ['001', '002', '003'],
    'Region': ['North', 'East', 'South']
})

df2 = pd.DataFrame({
    'User ID': ['004', '005', '006'],
    'Region': ['West', 'Central', 'North']
})

# 合并数据
result = pd.concat([df1, df2])
print(result)

Output:

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

示例代码 9: 使用 levels 和 names 参数

import pandas as pd

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

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

# 使用 keys, levels, 和 names 参数
result = pd.concat([df1, df2], keys=['first', 'second'], levels=[['first', 'second', 'third']], names=['Upper'])
print(result)

Output:

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

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

import pandas as pd

# 创建两个 DataFrame,列不完全相同
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
})

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

# 合并 DataFrame,使用外连接
result = pd.concat([df1, df2], sort=False)
print(result)

Output:

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

示例代码 11: 使用 sort 参数

import pandas as pd

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

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

# 合并 DataFrame,同时排序列
result = pd.concat([df1, df2], sort=True)
print(result)

Output:

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

示例代码 12: 复制数据避免修改原始数据

import pandas as pd

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

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

# 合并 DataFrame,避免修改原始数据
result = pd.concat([df1, df2], copy=True)
print(result)

Output:

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

示例代码 13: 合并时保留原有索引

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

# 合并 DataFrame,保留原有索引
result = pd.concat([df1, df2], ignore_index=False)
print(result)

Output:

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

示例代码 14: 使用多个 DataFrame 进行 concat

import pandas as pd

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

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

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

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

Output:

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

示例代码 15: 在 concat 中使用条件逻辑

import pandas as pd

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

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

# 使用条件逻辑决定是否合并
if len(df1) > 2:
    result = pd.concat([df1, df2])
else:
    result = df1

print(result)

Output:

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

通过这些示例,我们可以看到 pandas.concat() 是一个非常灵活的工具,能够处理各种复杂的数据合并需求。无论是简单的数据堆叠,还是需要复杂索引管理的场景,concat() 都能提供强大的支持。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程