📜  基于列合并三个数据框 pandas - Python (1)

📅  最后修改于: 2023-12-03 15:37:48.454000             🧑  作者: Mango

基于列合并三个数据框 pandas - Python

在数据分析和处理中,合并多个数据源是一个常见的任务。在 Pandas 中,我们可以使用 merge() 函数来将多个数据框基于列进行合并。

合并三个数据框

我们假设有三个数据框,分别为 df1、df2 和 df3,它们有相同的列名(key),我们可以使用以下代码将它们合并成一个数据框:

import pandas as pd

# 创建三个数据框
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value2': [5, 6, 7, 8]})
df3 = pd.DataFrame({'key': ['C', 'E', 'F', 'G'],
                    'value3': [9, 10, 11, 12]})

# 将三个数据框合并成一个数据框
df_merged = pd.merge(df1, df2, on='key', how='outer')
df_merged = pd.merge(df_merged, df3, on='key', how='outer')

print(df_merged)

输出结果为:

  key  value1  value2  value3
0   A     1.0     NaN     NaN
1   B     2.0     5.0     NaN
2   C     3.0     NaN     9.0
3   D     4.0     6.0     NaN
4   E     NaN     7.0    10.0
5   F     NaN     8.0    11.0
6   G     NaN     NaN    12.0
如何合并

在上面的例子中,我们使用了 merge() 函数来合并三个数据框。下面对此函数的参数进行说明。

参数说明
  • left:要合并的左数据框,即第一个数据框。
  • right:要合并的右数据框,即第二个数据框。
  • on:合并的列名,即两个数据框要基于哪一列进行合并。
  • how:合并方式,包括内连接(inner)、左连接(left)、右连接(right)和外连接(outer)。
  • suffixes:如果合并的两个数据框有相同的列名,可以使用该参数来为它们添加后缀,以避免重复。
四种合并方式
  • 内连接(inner join):只保留两个数据框中交集的部分,即只保留两个数据框中都存在的行。

    df_merged = pd.merge(df1, df2, on='key', how='inner')
    
  • 左连接(left join):保留左数据框所有的行,右数据框中与左数据框相匹配的行和未匹配的行。

    df_merged = pd.merge(df1, df2, on='key', how='left')
    
  • 右连接(right join):保留右数据框所有的行,左数据框中与右数据框相匹配的行和未匹配的行。

    df_merged = pd.merge(df1, df2, on='key', how='right')
    
  • 外连接(full outer join):保留两个数据框中所有的行,如果某个数据框中没有匹配的行,则用 NaN 来填充。

    df_merged = pd.merge(df1, df2, on='key', how='outer')
    
总结

本文介绍了如何基于列合并三个数据框,包括合并方式的参数说明和使用实例。在实际的数据处理中,我们需要根据具体的需求选择合适的合并方式来处理数据。