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