无涯教程-DataFrame.merge函数

92 阅读3分钟

Pandas merge()将两个数据集合并为一个,并根据公共属性或列对齐行。它是DataFrame对象之间所有标准数据库联接操作的入口点:

merge - 语法

pd.merge(left, right, how=inner, on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)

merge - 参数

  • right            -   DataFrame或命名为Series 它是一个与DataFrame合并的对象。
  • how             -   {left,right,outer,inner},默认的" inner" 要执行的合并类型。
    • left      - 它仅使用左框架中的键,类似于SQL左外部联接;保留键顺序。
    • right   - 它仅使用右框架中的键,类似于SQL右外部联接;保留键顺序。
    • outer  - 它使用了两个框架中的键并集,类似于SQL完全外部联接;按字典顺序对键进行排序。
    • inner  -  它使用两个框架中关键点的交集,类似于SQL内部联接。保留左键的顺序。
  • on                   -   标签或列表,它是要连接的列或索引级别的名称。
  • left_on          -   标签或列表,或类似数组的 它是左侧DataFrame中的列或索引级别名称,用作键。它可以是长度等于DataFrame长度的数组。
  • right_on       -  标签或列表,或类似数组的 它是来自右侧DataFrame的列或索引级别的名称,用作键。它可以是长度等于DataFrame长度的数组。
  • left_index    -  布尔型,默认为False 如果为true,它将使用左侧DataFrame的索引作为连接键。
  • right_index -  布尔型,默认为False 它使用来自右侧DataFrame的索引作为连接键。它具有相同的用法作为left_index。
  • sort                 - 布尔型,默认为False 如果为True,它将在结果DataFrame中按字典顺序对连接键进行排序。
  • suffixes          -  (str,str)的元组,默认为(_x,_y) 后缀适用于分别在左侧和右侧DataFrame中重叠列名称。
  • copy                -  布尔型,默认为True 如果为True,则返回DataFrame的副本。 否则,可以避免复制。
  • indicator       - 布尔值或str,默认为False 如果为True,它将添加一列以输出DataFrame" _merge ",其中包含有关每一行源的信息。如果是字符串,则将在每行的源上包含信息的列添加到输出DataFrame,并将该列命名为v由于字符串。信息列定义为分类类型,其值为:
    • " left_only"     -  用于其合并键仅出现在DataFrame的"左侧"的观测值。
    • " right_only"  -  用于其合并键仅出现在DataFrame的"右侧"的观测值。
    • "both"               -   用于其合并键仅出现在DataFrame的"两侧"的观测值。
  • validate     -    str,可选 如果指定,它将检查下面给出的合并类型:
    • " one_to_one"或" 1:1"            -  它检查是否一对一。
    • " one_to_many"或" 1:m"       -  它检查是否一对多。
    • " many_to_one"或" m:1"       -  它检查是否多对一。
    • " many_to_many"或" m:m"  -  它检查是否多对多。

示例1:在一个键上合并两个DataFrame

# import the pandas library
import pandas as pd
left = pd.DataFrame({
   id:[1,2,3,4],
   Name: [John, Parker, Learnfk, Parker],
   subject_id:[sub1,sub2,sub4,sub6]})
right = pd.DataFrame({
    id:[1,2,3,4],
   Name: [William, Albert, Tony, Allen],
   subject_id:[sub2,sub4,sub3,sub6]})
print (left)
print (right)

输出

    id      Name     subject_id

0 1 John sub1 1 2 Parker sub2 2 3 Learnfk sub4 3 4 Parker sub6

id      Name     subject_id

0 1 William sub2 1 2 Albert sub4 2 3 Tony sub3 3 4 Allen sub6

例2:在多个键上合并两个DataFrame:

import pandas as pd
left = pd.DataFrame({
   id:[1,2,3,4,5],
   Name: [Alex, Amy, Allen, Alice, Ayoung],
   subject_id:[sub1,sub2,sub4,sub6,sub5]})
right = pd.DataFrame({
	id:[1,2,3,4,5],
   Name: [Billy, Brian, Bran, Bryce, Betty],
   subject_id:[sub2,sub4,sub3,sub6,sub5]})
print pd.merge(left,right,on=id)

输出

    id   Name_x    subject_id_x   Name_y     subject_id_y
0   1     John      sub1          William     sub2
1   2     Parker    sub2          Albert      sub4
2   3     Learnfk     sub4          Tony        sub3
3   4     Parker    sub6          Allen       sub6

参考链接

www.learnfk.com/pandas/pand…