有2个dfs
df1和df2
df1 contains:
account_id account_name
0 37469426 Name1
1 71508517 Name2
2 85304427 Name3
3 115964688 Name4
4 119853529 Name4
df2 contains:
account_id account_name
0 37469426 Name1
1 71508517 Name2
2 85304427 Name3
3 115964688 Name4
4 119853529 Name4
5 1111 Test
我想以这样的方式比较它们,即df3中的值是df1中的值,而df2中的值不在此
在这种情况下,它应该不返回任何内容。
数据类型相同,列相同,值的数量不同。
我尝试了concat并合并,但是结果是错误的。
merged = pd.merge(df1 , df2, on=['account_id', 'account_name'], how='right')
#returns:
account_id account_name
0 37469426 Name1
1 71508517 Name2
2 85304427 Name3
3 115964688 Name4
4 119853529 Name5
merged = pd.merge(df1 , df2, on=['account_id', 'account_name'], how='left')
#returns:
0 37469426 Name1
1 71508517 Name2
2 85304427 Name3
3 115964688 Name4
4 119853529 Name4
5 1111 Test
#inner / outer return everything
0 37469426 Name1
1 71508517 Name2
2 85304427 Name3
3 115964688 Name4
4 119853529 Name4
5 1111 Test
compare_ga_accounts = pd.concat([df1 , df2])
compare_ga_accounts.drop_duplicates(keep=False, inplace=True)
#returns:
account_id account_name
0 1111 Test
我不知道为什么会这样((
答案 0 :(得分:3)
您可以只使用isin比较列值。例如,
UPDATE I
SET I.Extra5 = M.QtyPerMeasure
FROM Item AS I
INNER JOIN Measure AS M ON M.ItemName = I.ItemName
AND M.Unit = I.Unit