Python 合并数据帧,但不与右数据帧中的值相交
我有两个数据帧A和BPython 合并数据帧,但不与右数据帧中的值相交,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 = 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'))