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

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

参考:pandas concat ignore index

在数据处理和分析中,经常需要将多个数据集合并为一个大的数据集。Pandas 是 Python 中一个强大的数据分析工具,它提供了多种方式来合并数据,其中 concat() 函数是一个非常常用的功能。本文将详细介绍如何使用 Pandas 的 concat() 函数来合并数据,并特别关注 ignore_index 参数的使用。

1. concat() 函数简介

Pandas 的 concat() 函数主要用于沿着一条轴将多个对象堆叠到一起。例如,可以是沿着水平轴将两个 DataFrame 合并,或者沿着垂直轴将多个 Series 堆叠起来。函数的基本语法如下:

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

其中,ignore_index 参数默认为 False,如果设置为 True,则不使用原来的索引值,而是创建一个新的索引。

2. 使用 ignore_index=True

当我们合并数据时,如果不希望保留原有的索引,可以设置 ignore_index=True。这在很多情况下非常有用,特别是原始数据的索引没有实际意义时。

示例代码 1

import pandas as pd

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

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

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

Output:

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

示例代码 2

import pandas as pd

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

df2 = pd.DataFrame({
    "C": ["C4", "C5"],
    "D": ["D4", "D5"]
}, index=[4, 5])

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

Output:

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

3. 结合 axis 参数使用

concat() 函数的 axis 参数用于指定合并的轴向,默认为 0,表示垂直合并(行合并)。当设置 axis=1 时,表示水平合并(列合并)。结合 ignore_index 使用可以在不同的轴向上重置索引。

示例代码 3

import pandas as pd

df1 = pd.DataFrame({
    "E": ["E0", "E1", "E2"],
    "F": ["F0", "F1", "F2"]
}, index=[0, 1, 2])

df2 = pd.DataFrame({
    "G": ["G0", "G1", "G2"],
    "H": ["H0", "H1", "H2"]
}, index=[0, 1, 2])

result = pd.concat([df1, df2], axis=1, ignore_index=True)
print(result)

Output:

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

示例代码 4

import pandas as pd

df1 = pd.DataFrame({
    "I": ["I0", "I1"],
    "J": ["J0", "J1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "K": ["K0", "K1"],
    "L": ["L0", "L1"]
}, index=[0, 1])

result = pd.concat([df1, df2], axis=1, ignore_index=True)
print(result)

Output:

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

4. 结合 keys 参数使用

当我们设置 ignore_index=False 时,可以使用 keys 参数来创建一个多级索引。这样即使保留了原始索引,也可以通过外层索引来区分不同的数据源。

示例代码 5

import pandas as pd

df1 = pd.DataFrame({
    "M": ["M0", "M1"],
    "N": ["N0", "N1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "O": ["O0", "O1"],
    "P": ["P0", "P1"]
}, index=[2, 3])

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

Output:

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

示例代码 6

import pandas as pd

df1 = pd.DataFrame({
    "Q": ["Q0", "Q1"],
    "R": ["R0", "R1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "S": ["S0", "S1"],
    "T": ["T0", "T1"]
}, index=[2, 3])

result = pd.concat([df1, df2], keys=['first', 'second'])
print(result)

Output:

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

5. 使用 sort 参数

sort 参数用于控制合并后的 DataFrame 是否按照列名进行排序。默认为 False,如果设置为 True,则合并后的 DataFrame 将根据列名排序。

示例代码 7

import pandas as pd

df1 = pd.DataFrame({
    "U": ["U0", "U1"],
    "V": ["V0", "V1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "W": ["W0", "W1"],
    "X": ["X0", "X1"]
}, index=[2, 3])

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

Output:

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

示例代码 8

import pandas as pd

df1 = pd.DataFrame({
    "Y": ["Y0", "Y1"],
    "Z": ["Z0", "Z1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "AA": ["AA0", "AA1"],
    "BB": ["BB0", "BB1"]
}, index=[2, 3])

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

Output:

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

6. 处理重复列名

在使用 concat() 函数合并 DataFrame 时,如果存在重复的列名,Pandas 默认会保留所有列。我们可以通过设置 verify_integrity=True 来检查是否有重复的列名,如果有,则会抛出异常。

示例代码 9

import pandas as pd

df1 = pd.DataFrame({
    "CC": ["CC0", "CC1"],
    "DD": ["DD0", "DD1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "CC": ["CC2", "CC3"],
    "EE": ["EE0", "EE1"]
}, index=[2, 3])

try:
    result = pd.concat([df1, df2], verify_integrity=True)
    print(result)
except ValueError as e:
    print("Error:", e)

Output:

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

示例代码 10

import pandas as pd

df1 = pd.DataFrame({
    "FF": ["FF0", "FF1"],
    "GG": ["GG0", "GG1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "FF": ["FF2", "FF3"],
    "HH": ["HH0", "HH1"]
}, index=[2, 3])

try:
    result = pd.concat([df1, df2], verify_integrity=True)
    print(result)
except ValueError as e:
    print("Error:", e)

Output:

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

7. 使用 copy 参数

当设置 copy=False 时,concat() 函数尽可能不复制数据,直接使用原始对象的内存。这可以提高性能,尤其是在处理大型数据集时。但是,如果原始数据在后续操作中被修改,那么合并后的数据也会受到影响。

示例代码 11

import pandas as pd

df1 = pd.DataFrame({
    "II": ["II0", "II1"],
    "JJ": ["JJ0", "JJ1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "KK": ["KK0", "KK1"],
    "LL": ["LL0", "LL1"]
}, index=[2, 3])

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

Output:

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

示例代码 12

import pandas as pd

df1 = pd.DataFrame({
    "MM": ["MM0", "MM1"],
    "NN": ["NN0", "NN1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "OO": ["OO0", "OO1"],
    "PP": ["PP0", "PP1"]
}, index=[2, 3])

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

Output:

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

8. 处理不同的数据类型

当合并的 DataFrame 包含不同的数据类型时,Pandas 会尝试找到一个兼容所有数据的类型。如果无法找到,它会将数据类型提升到更通用的类型。

示例代码 13

import pandas as pd

df1 = pd.DataFrame({
    "QQ": [1, 2],
    "RR": [3.0, 4.0]
}, index=[0, 1])

df2 = pd.DataFrame({
    "SS": ["five", "six"],
    "TT": [7.0, 8.0]
}, index=[2, 3])

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

Output:

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

示例代码 14

import pandas as pd

df1 = pd.DataFrame({
    "UU": [True, False],
    "VV": [9.0, 10.0]
}, index=[0, 1])

df2 = pd.DataFrame({
    "WW": ["eleven", "twelve"],
    "XX": [13, 14]
}, index=[2, 3])

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

Output:

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

9. 结合使用 join 参数

join 参数控制如何处理不在所有 DataFrame 中出现的列。默认值为 ‘outer’,表示取并集,如果设置为 ‘inner’,则表示取交集。

示例代码 15

import pandas as pd

df1 = pd.DataFrame({
    "YY": ["YY0", "YY1"],
    "ZZ": ["ZZ0", "ZZ1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "AA": ["AA0", "AA1"],
    "BB": ["BB0", "BB1"]
}, index=[2, 3])

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

Output:

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

示例代码 16

import pandas as pd

df1 = pd.DataFrame({
    "CC": ["CC0", "CC1"],
    "DD": ["DD0", "DD1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "EE": ["EE0", "EE1"],
    "FF": ["FF0", "FF1"]
}, index=[2, 3])

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

Output:

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

10. 总结

在本文中,我们详细介绍了 Pandas 的 concat() 函数及其参数的使用,特别是 ignore_index 参数。通过多个示例代码,我们展示了如何在实际应用中使用这些功能来有效地合并数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程