Python中pd.concat的用法和实例用法介绍

Python中pd.concat的用法和实例用法介绍

Python中pd.concat的用法和实例用法介绍

引言

在数据分析和数据处理中,经常需要将多个数据集合并(合并)为一个数据集。Python中的pandas库提供了pd.concat()函数来实现数据的合并。本文将详细介绍pd.concat()函数的用法和几个实例。

1. pd.concat()函数概述

pd.concat()函数用于将多个SeriesDataFrame对象按照指定的轴方向进行合并。其语法如下所示:

pd.concat(objs, axis=0, join='outer', ignore_index=False)
Python

参数说明:

  • objs:要合并的SeriesDataFrame对象,在合并时可以传入一个列表或字典。
  • axis:合并的轴方向,0表示按行合并(垂直合并),1表示按列合并(水平合并)。
  • join:合并时的方式,’outer’表示外连接,’inner’表示内连接。
  • ignore_index:是否忽略原有索引,如果设置为True,则会生成新的索引。

pd.concat()函数的返回值是合并后的新对象。

2. 垂直合并(按行合并)

垂直合并是指将多个DataFrame对象按照行的方向进行合并,即增加行的数量。在pd.concat()函数中,将axis参数设置为0表示按行合并。下面是一个示例:

import pandas as pd

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

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

# 垂直合并两个DataFrame对象
result = pd.concat([df1, df2], axis=0)

print(result)
Python

运行结果:

    A   B   C
0  A0  B0  C0
1  A1  B1  C1
2  A2  B2  C2
3  A3  B3  C3
0  A4  B4  C4
1  A5  B5  C5
2  A6  B6  C6
3  A7  B7  C7
Python

在上述示例中,我们创建了两个具有相同列名的DataFrame对象df1df2,然后使用pd.concat()函数将它们垂直合并为一个新的DataFrame对象result。可以看到,新的DataFrame对象中包含了两个原始对象的所有行,行索引自动增加。

3. 水平合并(按列合并)

水平合并是指将多个DataFrame对象按照列的方向进行合并,即增加列的数量。在pd.concat()函数中,将axis参数设置为1表示按列合并。下面是一个示例:

import pandas as pd

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

df2 = pd.DataFrame({'D': ['D0', 'D1', 'D2', 'D3'],
                    'E': ['E0', 'E1', 'E2', 'E3'],
                    'F': ['F0', 'F1', 'F2', 'F3']})

# 水平合并两个DataFrame对象
result = pd.concat([df1, df2], axis=1)

print(result)
Python

运行结果:

    A   B   C   D   E   F
0  A0  B0  C0  D0  E0  F0
1  A1  B1  C1  D1  E1  F1
2  A2  B2  C2  D2  E2  F2
3  A3  B3  C3  D3  E3  F3
Python

在上述示例中,我们创建了两个具有不同列名的DataFrame对象df1df2,然后使用pd.concat()函数将它们水平合并为一个新的DataFrame对象result。可以看到,新的DataFrame对象中包含了两个原始对象的所有列,列索引自动增加。

4. 内连接和外连接

在合并过程中,pd.concat()函数还提供了参数join用于控制合并的方式,默认值为’outer’,表示进行外连接。如果希望进行内连接(保留两个DataFrame对象中都存在的行或列),可以设置join参数为’inner’。下面是一个示例:

import pandas as pd

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

df2 = pd.DataFrame({'C': ['C2', 'C3', 'C4', 'C5'],
                    'D': ['D2', 'D3', 'D4', 'D5'],
                    'E': ['E2', 'E3', 'E4', 'E5']})

# 外连接两个DataFrame对象
result_outer = pd.concat([df1, df2], axis=1, join='outer')

# 内连接两个DataFrame对象
result_inner = pd.concat([df1, df2], axis=1, join='inner')

print("外连接结果:")
print(result_outer)
print("内连接结果:")
print(result_inner)
Python

运行结果:

外连接结果:
     A    B    C    C    D    E
0   A0   B0   C0   C2   D2   E2
1   A1   B1   C1   C3   D3   E3
2   A2   B2   C2   C4   D4   E4
3   A3   B3   C3   C5   D5   E5
内连接结果:
    A   B   C   C   D   E
2  A2  B2  C2  C4  D4  E4
3  A3  B3  C3  C5  D5  E5
Python

在上述示例中,我们创建了两个具有部分相同列名的DataFrame对象df1df2,然后使用pd.concat()函数按列进行外连接和内连接。可以看到,外连接结果包含了两个原始对象的所有列,内连接结果只包含两个原始对象同时存在的列。

5. 忽略原有索引

pd.concat()函数中,还可以设置ignore_index参数来忽略原有的索引,生成新的索引。默认情况下,ignore_index参数的值为False,即保留原有索引。下面是一个示例:

import pandas as pd

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

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

# 合并两个DataFrame对象并忽略原有索引
result = pd.concat([df1, df2], axis=0, ignore_index=True)

print(result)
Python

运行结果:

    A   B   C
0  A0  B0  C0
1  A1  B1  C1
2  A2  B2  C2
3  A3  B3  C3
4  A4  B4  C4
5  A5  B5  C5
6  A6  B6  C6
7  A7  B7  C7
Python

在上述示例中,我们创建了两个具有相同列名的DataFrame对象df1df2,然后使用pd.concat()函数按行合并并忽略原有索引。通过设置ignore_index=True,新的DataFrame对象result生成了新的索引,而不是保留原有的索引。

结论

本文介绍了pd.concat()函数在Python中的用法和几个实例。通过pd.concat()函数,我们可以方便地合并多个SeriesDataFrame对象。通过指定合并的轴方向、连接方式和是否忽略原有索引,可以根据具体需求进行合并操作。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册