Python 合并数据帧,但不与右数据帧中的值相交

Python 合并数据帧,但不与右数据帧中的值相交,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧A和B A = pd.DataFrame({'a'=[1,2,3,4,5], 'b'=[11,22,33,44,55]}) B = pd.DataFrame({'a'=[7,2,3,4,9], 'b'=[123,234,456,789,1122]}) 我想合并B和A,这样我就不需要A列“A”中的公共值,也不需要B列中的公共值,应该只取A列中B列中的非相交值。最后的数据帧应该如下所示 A. B 1. 11 2. 22 3. 33 4. 44 5. 55 7. 123 9 1122

我有两个数据帧A和B

A = pd.DataFrame({'a'=[1,2,3,4,5], 'b'=[11,22,33,44,55]})
B = pd.DataFrame({'a'=[7,2,3,4,9], 'b'=[123,234,456,789,1122]})
我想合并B和A,这样我就不需要A列“A”中的公共值,也不需要B列中的公共值,应该只取A列中B列中的非相交值。最后的数据帧应该如下所示

A. B 1. 11 2. 22 3. 33 4. 44 5. 55 7. 123 9 1122
如果
a
a
B
中的值都是唯一的(例如某种唯一ID),您可以尝试使用
concat
删除重复项

pd.concat([A,B]).drop_duplicates('a')
输出:

   a     b
0  1    11
1  2    22
2  3    33
3  4    44
4  5    55
0  7   123
4  9  1122
在一般情况下,使用
isin
检查
a['a']
中是否存在
B['a']

pd.concat([A,B[~B['a'].isin(A['a'])])

如果您的键是单列,您也可以使用
set()
和set less操作。您能否澄清一下“不希望B中的a列和B列中的公共值”是什么意思。列上的合并是否包含B?它是['A','B']还是仅仅是'A'?你能至少为pd.merge/join调用编写伪代码吗?QH的答案太好了,这对OP来说没有那么好。然而,当人们应该将列放在索引中时,通常使用列作为索引。在这种情况下,如果他们将列
'a'
放在索引中,他们可能会先使用方法
combine\u
。像这样:
A.设置索引('A')。首先合并(B.设置索引('A'))