Python 在两个数据帧上左连接后,查找添加的额外行的键
我有2个数据帧(比如说数据帧A和数据帧B),我用熊猫合并功能将它们合并Python 在两个数据帧上左连接后,查找添加的额外行的键,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有2个数据帧(比如说数据帧A和数据帧B),我用熊猫合并功能将它们合并 merged = A.merge(B, left_on = ["A_Key1", "A_Key2"], right_on = ["B_Key1", "B_Key2"], how = 'left') 由于表B中有一些重复的行,合并后的结果比表A多了一些行 我只想知道这些额外行的“A_Key1”的值是多少 我试过以下几件事: dup = A.loc[B.duplicated(["B_Key1", "B_Key2"]),:]
merged = A.merge(B, left_on = ["A_Key1", "A_Key2"], right_on = ["B_Key1", "B_Key2"], how = 'left')
由于表B中有一些重复的行,合并后的结果比表A多了一些行
我只想知道这些额外行的“A_Key1”的值是多少
我试过以下几件事:
dup = A.loc[B.duplicated(["B_Key1", "B_Key2"]),:]
dup['B_Key1'].isin(A["A_Key1", "B_Key2"].unique())
但是,正如我所料,这不起作用。仅用于A
DataFrame
:
A = pd.DataFrame({
'A':list('abcdef'),
'A_Key1':[3,3,6,5,5,4],
'A_Key2':list('aaabbb')
})
B = pd.DataFrame({
'B':list('qwerty'),
'B_Key1':[5,3,6,1,3,5],
'B_Key2':list('aaaaab')
})
merged = A.merge(B, left_on=["A_Key1", "A_Key2"], right_on=["B_Key1", "B_Key2"], how = 'left')
print (merged)
A A_Key1 A_Key2 B B_Key1 B_Key2
0 a 3 a w 3.0 a
1 a 3 a t 3.0 a
2 b 3 a w 3.0 a
3 b 3 a t 3.0 a
4 c 6 a e 6.0 a
5 d 5 b y 5.0 b
6 e 5 b y 5.0 b
7 f 4 b NaN NaN NaN
@jazrael我想那会管用的,以前也试过。但是结果会比添加的其他行更大。@HarishJ-hmmm,那么输出的测试值呢?答案已编辑。
dup = merged[merged.duplicated(["B_Key1", "B_Key2"])]
print (dup)
A A_Key1 A_Key2 B B_Key1 B_Key2
1 a 3 a t 3.0 a
2 b 3 a w 3.0 a
3 b 3 a t 3.0 a
6 e 5 b y 5.0 b
dup1 = merged.loc[merged.duplicated(["A_Key1", "A_Key2"]),
['A_Key1','A_Key2','B_Key1','B_Key2']]
print (dup1)
A_Key1 A_Key2 B_Key1 B_Key2
1 3 a 3.0 a
2 3 a 3.0 a
3 3 a 3.0 a
6 5 b 5.0 b