Python 合并数据帧并保留合并准则不匹配的行

Python 合并数据帧并保留合并准则不匹配的行,python,pandas,Python,Pandas,我有两个数据帧: df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],'B': ['B0', 'B1', 'B2']}) df2 = pd.DataFrame({'A': ['A0', 'A1', 'A3'],'B': ['B0', 'B1', 'B2']}) 我现在想通过'A'列中的条目合并这两个数据帧。但我不想保留匹配的行,而是保留彼此不匹配的行 这意味着,我想得到一个新的数据帧,它看起来像这样: df_new = pd.DataFrame({'A':[

我有两个数据帧:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],'B': ['B0', 'B1', 'B2']})
df2 = pd.DataFrame({'A': ['A0', 'A1', 'A3'],'B': ['B0', 'B1', 'B2']})
我现在想通过
'A'
列中的条目合并这两个数据帧。但我不想保留匹配的行,而是保留彼此不匹配的行

这意味着,我想得到一个新的数据帧,它看起来像这样:

df_new = pd.DataFrame({'A':['A3'], 'B':['B2']})
我怎么能这样做

非常感谢

试试这个,使用:


使用外部联接进行合并会得到类似的结果:

df1.merge(df2, how = 'outer', on = 'A', indicator = True)
可通过
查询
对其进行筛选:

df1.merge(df2, how = 'outer', on = 'A', indicator = True).query("_merge != 'both'")

注意
indicator=True
创建的列
\u merge
适合于筛选行。

您的
pd.merge()中的
how='outer'
怎么样?谢谢!如果我在=['A',B']
上使用
on,那么数据集首先由
'A'
合并,然后由列
'B'
合并。当列表作为
on
参数传递时,列表中的所有列都用作连接数据帧的复合键。这类似于'df1.A==df2.A&df1.B==df2.B',类似于关系数据库中的SQL join子句。好的,这意味着,列首先由第一个参数连接,然后由第二个参数连接,对吗?我不确定
on=['A',B']
on=['B',A']
在实现此方法时。从合并逻辑和结果的角度来看,它是完全相同的。
    A  B_x  B_y      _merge
0  A0   B0   B0        both
1  A1   B1   B1        both
2  A2   B2  NaN   left_only
3  A3  NaN   B2  right_only
df1.merge(df2, how = 'outer', on = 'A', indicator = True).query("_merge != 'both'")
    A  B_x  B_y      _merge
2  A2   B2  NaN   left_only
3  A3  NaN   B2  right_only