7
如何在两个数据框中挑出与同名列的区别? 我的意思是我有一个数据框A的列名为X和数据框B的列名为X,如果我做pd.merge(A, B, on=['X'])
,我会得到A和B的共同的X值,但我怎么能得到“非常见”的?熊猫(Python)中的“反合并”
如何在两个数据框中挑出与同名列的区别? 我的意思是我有一个数据框A的列名为X和数据框B的列名为X,如果我做pd.merge(A, B, on=['X'])
,我会得到A和B的共同的X值,但我怎么能得到“非常见”的?熊猫(Python)中的“反合并”
如果更改合并类型为how='outer'
和indicator=True
这将增加一列告诉你值是否是左/都/右只:
In [2]:
A = pd.DataFrame({'x':np.arange(5)})
B = pd.DataFrame({'x':np.arange(3,8)})
print(A)
print(B)
x
0 0
1 1
2 2
3 3
4 4
x
0 3
1 4
2 5
3 6
4 7
In [3]:
pd.merge(A,B, how='outer', indicator=True)
Out[3]:
x _merge
0 0.0 left_only
1 1.0 left_only
2 2.0 left_only
3 3.0 both
4 4.0 both
5 5.0 right_only
6 6.0 right_only
7 7.0 right_only
然后,您可以筛选产生的合并对DF _merge
西:
In [4]:
merged = pd.merge(A,B, how='outer', indicator=True)
merged[merged['_merge'] == 'left_only']
Out[4]:
x _merge
0 0.0 left_only
1 1.0 left_only
2 2.0 left_only
您还可以使用isin
和否定面具B中找到值不:
In [5]:
A[~A['x'].isin(B['x'])]
Out[5]:
x
0 0
1 1
2 2
你可以用'〜A ['X']。isin(B ['X'])'来查看A唯一的值,并且做相反的操作 – EdChum
另外我认为'pd.merge (A,B,on = ['X'],indicator = True,how ='outer')'将会起作用,因为这会增加_merge col,并且这将具有值'left_only','right_only'以指示值只有左/右 – EdChum