Python – 如何连接三个或更多个Pandas DataFrame?

Python – 如何连接三个或更多个Pandas DataFrame?

在数据分析和处理中,我们通常会有多个数据源,并需要将它们合并为一个数据集以进行分析或建模。在Python中,Pandas是一个强大的数据处理库,提供了多种方法来连接或合并DataFrame。在本文中,我们将探讨如何连接三个或更多个Pandas DataFrame。

Concatenation

连接多个DataFrame的最简单方法是使用concat函数进行连接。该函数可以沿着指定的轴(axis)在多个DataFrame之间连接数据。以下是使用concat()函数连接三个DataFrame的示例代码:

import pandas as pd
import numpy as np

# create 3 sample DataFrames
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

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

df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
                    'B': ['B8', 'B9', 'B10', 'B11'],
                    'C': ['C8', 'C9', 'C10', 'C11'],
                    'D': ['D8', 'D9', 'D10', 'D11']})

# concatenate DataFrames vertically (along rows)
concatenated_df = pd.concat([df1, df2, df3], axis=0)

print(concatenated_df)

输出:

     A    B    C    D
0   A0   B0   C0   D0
1   A1   B1   C1   D1
2   A2   B2   C2   D2
3   A3   B3   C3   D3
0   A4   B4   C4   D4
1   A5   B5   C5   D5
2   A6   B6   C6   D6
3   A7   B7   C7   D7
0   A8   B8   C8   D8
1   A9   B9   C9   D9
2  A10  B10  C10  D10
3  A11  B11  C11  D11

生成了一个新的DataFrame,包括三个原始数据框。可以看到,新的DataFrame中的行数是三个数据框的行数之和,因为我们使用axis=0参数指定了连接轴为行。

如果您想按列连接数据框,可以设置axis=1,其中新的DataFrame的列数是原始数据框列数的总和。

Merging

另一个连接多个DataFrame的常见方法是使用merge函数。基本上,将两个DataFrame合并时,您需要指定一个键(或多个键),以便Pandas可以确定两个DataFrame之间的连接方式。以下是使用merge()函数连接三个DataFrame的示例代码:

import pandas as pd
import numpy as np

# create 3 sample DataFrames
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']})

df3 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'E': ['E0', 'E1', 'E2', 'E3'],
                    'F': ['F0', 'F1', 'F2', 'F3']})

# merge DataFrames on the 'key' column
merged_df = pd.merge(df1, df2, on='key')
merged_df = pd.merge(merged_df, df3, on='key')

print(merged_df)

输出:

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

我们使用merge()函数将三个数据框连接为一个数据框。这是一个基于“键”的连接,其中'key'列在每个数据框中都存在。因此,我们将在所有三个表中匹配'key'列,然后将其合并到一个输出表中。

Joining

类似于merge()函数,join()函数也可以连接多个DataFrame。但是,当您想要根据索引连接DataFrame时,join()函数是更方便的方法。以下是使用join()函数连接三个DataFrame的示例代码:

import pandas as pd
import numpy as np

# create 3 sample DataFrames
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({'E': ['E0', 'E1', 'E2', 'E3'],
                    'F': ['F0', 'F1', 'F2', 'F3'],
                    'G': ['G0', 'G1', 'G2', 'G3'],
                    'H': ['H0', 'H1', 'H2', 'H3']},
                    index=[0, 1, 2, 3])

df3 = pd.DataFrame({'I': ['I0', 'I1', 'I2', 'I3'],
                    'J': ['J0', 'J1', 'J2', 'J3'],
                    'K': ['K0', 'K1', 'K2', 'K3'],
                    'L': ['L0', 'L1', 'L2', 'L3']},
                    index=[0, 1, 2, 3])

# join DataFrames based on their index
joined_df = df1.join([df2, df3])

print(joined_df)

输出:

    A   B   C   D   E   F   G   H   I   J   K   L
0  A0  B0  C0  D0  E0  F0  G0  H0  I0  J0  K0  L0
1  A1  B1  C1  D1  E1  F1  G1  H1  I1  J1  K1  L1
2  A2  B2  C2  D2  E2  F2  G2  H2  I2  J2  K2  L2
3  A3  B3  C3  D3  E3  F3  G3  H3  I3  J3  K3  L3

使用join()函数,我们将三个数据框连接成一个数据框。这里,我们使用了索引作为连接依据,因此,所有数据框的索引必须相同。我们可以通过指定join()函数的参数来控制连接方式,如howonleft_indexright_index等。

总结

当您需要连接或合并多个DataFrame时,可以使用concat()merge()join()函数。concat()函数用于沿着轴方向连接数据,即将多个数据框拼接成一个大的数据框;merge()函数用于将多个数据框根据某些键连接成一个数据框,即连接两个不同的数据框,并按照一些指定的列进行连接;join()函数用于连接多个数据框,但它专注于基于索引的连接,即对于没有任何共同列的数据框进行连接操作。

这里简要介绍了三种连接DataFrame的方法,但实际上还有更多方法可以进行数据框的合并。根据您的需求和实际应用场景,选择合适的方法来按照您的需要连接三个或更多Pandas DataFrame。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程