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