Pandas将多个DataFrame合并

Pandas将多个DataFrame合并

在本文中,我们将介绍如何使用Pandas将多个DataFrame合并成一个新的DataFrame。Pandas是一个Python的数据分析和数据操作工具,具有强大的数据合并和整理功能。当我们需要将多个数据源的数据合并成一个数据集时,Pandas是很好的选择,因为它提供了多种数据合并的方式和灵活的参数设置。

阅读更多:Pandas 教程

Pandas数据合并

Pandas数据合并的基本思想是根据相同的key将多个DataFrame进行合并。在Pandas中有多种方法可以实现合并操作,其中包括merge()函数、join()函数和concat()函数。下面我们分别介绍一下这些函数的使用方法。

merge()函数合并

merge()函数是Pandas中最常用的数据合并函数。它可以通过指定两个DataFrame中共同的列将两个DataFrame合并为一个新的DataFrame。例如,我们有如下两个DataFrame:

import pandas as pd

df1 = pd.DataFrame({
   'key': ['K0', 'K1', 'K2', 'K3'],
   'A': ['A0', 'A1', 'A2', 'A3'],
   'B': ['B0', 'B1', 'B2', 'B3']
})

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

这两个DataFrame共有一列key,我们可以使用merge()函数根据这一列将这两个DataFrame合并为一个新的DataFrame。

result = pd.merge(df1, df2, on='key')
print(result)

输出的结果如下:

    key   A   B   C   D
0   K0  A0  B0  C0  D0
1   K1  A1  B1  C1  D1
2   K2  A2  B2  C2  D2
3   K3  A3  B3  C3  D3

merge()函数有很多参数可以用来控制合并过程,例如how参数可以指定合并方式。默认情况下,how=’inner’表示将两个DataFrame中key列相等的部分合并在一起,how=’outer’表示保留两个DataFrame中所有的key,并且将尽可能多的行合并在一起,how=’left’表示以左边的DataFrame中的key为准进行合并,右边的DataFrame中key不存在的部分填充为NaN,how=’right’与how=’left’相反。

join()函数合并

join()函数是merge()函数的简化版,可以根据相同的索引将两个DataFrame进行合并。因此,在使用join()函数时,必须确保两个DataFrame的索引有相同的名称和顺序。例如,我们有如下两个DataFrame:

df1 = pd.DataFrame({
   'A': ['A0', 'A1', 'A2', 'A3'],
   'B': ['B0', 'B1', 'B2', 'B3']
}, index=['K0', 'K1', 'K2', 'K3'])

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

这两个DataFrame的索引为[‘K0’, ‘K1’, ‘K2’, ‘K3’],我们使用join()函数将这两个DataFrame合并为一个新的DataFrame。

result = df1.join(df2)
print(result)

输出的结果如下:

     A   B   C   D
K0  A0  B0  C0  D0
K1  A1  B1  C1  D1
K2  A2  B2  C2  D2
K3  A3  B3  C3  D3

join()函数也有类似于merge()函数的how参数用于指定合并方式。

concat()函数合并

concat()函数可以将多个DataFrame进行连接,连接方式包括沿着列和行的连接。比如,我们有如下两个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])

我们可以使用concat()函数将这两个DataFrame沿着行方向拼接为一个新的DataFrame:

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

输出的结果如下:

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7

我们也可以将它们沿着列方向拼接:

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

输出的结果如下:

    A   B   C   D   A   B   C   D
0  A0  B0  C0  D0  NaN NaN NaN NaN
1  A1  B1  C1  D1  NaN NaN NaN NaN
2  A2  B2  C2  D2  NaN NaN NaN NaN
3  A3  B3  C3  D3  NaN NaN NaN NaN
4  NaN NaN NaN NaN  A4  B4  C4  D4
5  NaN NaN NaN NaN  A5  B5  C5  D5
6  NaN NaN NaN NaN  A6  B6  C6  D6
7  NaN NaN NaN NaN  A7  B7  C7  D7

需要注意的是,使用concat()函数进行连接时需要注意列名和行索引的对齐问题。

总结

本文介绍了Pandas中三种数据合并的方法:merge()函数、join()函数和concat()函数。这些函数都可以将多个DataFrame进行整合,实现数据合并的功能。在实际应用中,我们可以根据具体的需求选择不同的函数进行数据整合,根据不同的参数设置进行灵活的调整。通过合理的数据合并操作,我们可以在数据分析和数据处理过程中更加高效地进行数据整合,提高数据处理的效率和准确性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程