独立合并两列后如何创建新数据框?

How do I create a new dataframe after merging on two columns independently?

我有两个数据框,我希望合并后的结果数据框包含 n 列中左侧数据框的所有元素,如下所示:

df1:
    a    b
--  ---  ---
 0  a    bb
 1  aa   c
 2  b    cc
 3  bb   aa

df2:

      a    b
--  ---  ---
 0  a    e
 1  aa   d
 2  b    dd
 3  bb   ee
 4  c    a
 5  cc   d
 6  d    b
 7  dd   e
 8  e    aa
 9  ee   d

和预期的合并 datfarme 为:

merge:

    a    b
--  ---  ---
 0  a    e
 1  aa   d
 2  b    dd
 3  bb   ee
 4  c    a
 5  d    b
 6  e    aa

我尝试过解决方案:

merge = df1.merge(df2, on=['a', 'b'], how='outer')
merge = df1.append(df2).drop_duplicates()

然而,它并没有产生预期的数据帧merge

如何在 pandas 中执行相同的操作?

merge 将包含 df2df1 中存在的所有列值(vlookup 但行的各个值。因为 [=16= 的任一列中都有值] 出现在 df2)

的任一列中

对不起,我没有用更好的措辞。如果您有任何疑问,我会尽力解释。

如果需要通过 df1 的任何列检查 df2 的任何列,请使用 DataFrame.isin with flatten df1 by np.ravel and filter by at least one value per row by DataFrame.any in boolean indexing:

merge = df2[df2.isin(np.ravel(df1)).any(axis=1)]
print (merge)
    a   b
0   a   e
1  aa   d
2   b  dd
3  bb  ee
4   c   a
5  cc   d
6   d   b
8   e  aa

如果需要指定列进行测试:

merge = df2[df2[['a','b']].isin(np.ravel(df1[['a','b']])).any(axis=1)]