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

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

基于列合并两个数据框 - Python

在数据分析中,我们经常需要将两个数据框按照某一列进行合并,这个列是两个数据框共有的,在 Python 中可以使用 merge 函数来实现。

merge 函数的参数
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
        left_index=False, right_index=False, sort=False,
        suffixes=('_x', '_y'), copy=True, indicator=False,
        validate=None)

merge 函数的第一个参数是左侧的数据框,第二个参数是右侧的数据框,第三个参数是合并方式(默认是 inner join),第四个参数是合并所用的列(如果不指定,则默认使用两个数据框共有的列)。

  • left:左侧的数据框。
  • right:右侧的数据框。
  • how:指定合并的方式,有四种方式:inner,outer,left 和 right,默认值是 inner。
    • inner:内连接,只保留两个数据框共有的行。
    • outer:外连接,保留两个数据框的所有行,没有对应值的用 NaN 填充。
    • left:左连接,保留左侧数据框中的所有行。
    • right:右连接,保留右侧数据框中的所有行。
  • on:指定用于合并的列名。如果不指定该参数,则会使用两个数据框共有的列进行合并。
  • left_on:左侧数据框中用于合并的列名。
  • right_on:右侧数据框中用于合并的列名。
  • left_index,right_index:是否使用行索引进行合并,默认为 False。
  • sort:是否按照合并键排序,默认为 False。
  • suffixes:当两个数据框中有重复的列名时,指定列名的后缀。
  • copy:是否复制数据框,默认为 True。
  • indicator:是否在输出结果中添加一列,表示该行的来源。
  • validate:验证合并方式的合法性,有三个值:one_to_one,one_to_many,many_to_many。
示例代码
import pandas as pd

# 创建数据
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'F', 'G'], 'value2': [5, 6, 7, 8]})

# 内连接
df3 = pd.merge(df1, df2, on='key', how='inner')
print(df3)

# 左连接
df4 = pd.merge(df1, df2, on='key', how='left')
print(df4)

# 右连接
df5 = pd.merge(df1, df2, on='key', how='right')
print(df5)

# 外连接
df6 = pd.merge(df1, df2, on='key', how='outer')
print(df6)

以上代码输出结果如下:

  key  value1  value2
0   B       2       5
1   D       4       6
  key  value1  value2
0   A       1     NaN
1   B       2     5.0
2   C       3     NaN
3   D       4     6.0
   key  value1  value2
0    B     2.0       5
1    D     4.0       6
2    F     NaN       7
3    G     NaN       8
  key  value1  value2
0   A     1.0     NaN
1   B     2.0     5.0
2   C     3.0     NaN
3   D     4.0     6.0
4   F     NaN     7.0
5   G     NaN     8.0
总结

merge 函数可以方便地对两个数据框进行合并,使得我们可以更加方便地进行数据分析和处理。在使用该函数时,一定要注意指定好合并方式和合并列,避免错误的结果。