pandas 的 merge

pd.merge(left, right, how``=``'inner'``, on``=``None``, left_on``=``None``, right_on``=``None``,

left_index``=``False``, right_index``=``False``, sort``=``True``,

suffixes``=``(``'_x'``, ``'_y'``), copy``=``True``, indicator``=``False``,

validate``=``None``)
>>> left ``= pd.DataFrame({``'A'``: [``'a0'``, ``'a1'``, ``'a2'``, ``'a3'``],

'B'``: [``'b0'``, ``'b1'``, ``'b2'``, ``'b3'``],

'k1'``: [``'x'``, ``'x'``, ``'y'``, ``'y'``]})

>>> right ``= pd.DataFrame({``'C'``: [``'c1'``, ``'c2'``, ``'c3'``, ``'c4'``],

'D'``: [``'d1'``, ``'d2'``, ``'d3'``, ``'d4'``],

'k1'``: [``'y'``, ``'y'``, ``'z'``, ``'z'``]})

>>> left

A   B  k1

0  a0  b0  x

1  a1  b1  x

2  a2  b2  y

3  a3  b3  y

>>> right

C   D  k1

0  c1  d1  y

1  c2  d2  y

2  c3  d3  z

3  c4  d4  z
对 df1 和 df2 进行 merge:
|

>>> pd.merge(left, right)

A   B  k1  C   D

0  a2  b2  y  c1  d1

1  a2  b2  y  c2  d2

2  a3  b3  y  c1  d1

3  a3  b3  y  c2  d2

|

可以看到只有 df1 和 df2 的 key1=y 的行保留了下来,即默认合并后只保留有共同列项并且值相等行(即交集)。

本例中 left 和 right 的 k1=y 分别有 2 个,最终构成了 2*2=4 行。

如果没有共同列会报错:
>>> ``del left[``'k1'``]

>>> pd.merge(left, right)

pandas.errors.MergeError: No common columns to perform merge on