比较2个DataFrame时出现问题,返回错误结果

时间:2019-08-23 09:05:23

标签: python pandas dataframe

有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

我不知道为什么会这样((

1 个答案:

答案 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