如何在 python 中将第 1 列的每一行与第 2 列的所有行进行比较?

how can I compare each row of column 1 against all rows of column 2 in python?

提问人:user1063049 提问时间:7/13/2023 最后编辑:user1063049 更新时间:7/13/2023 访问量:41

问:

测试数据:在此输入图片描述

finaldata1:abc、nck、xkl、mzn

finaldata2:Abk、Nck、cnl、mzn

校验列:cnl、Abk、Abc

“相同”检查的预期结果:

finaldata1:abc

finaldata2:Abk、cnl

我尝试将 finaldata1 和 finaldata2 与检查列进行比较。我一次只做一列,因为我不知道如何使用多列组合搜索。然后,如果存在差异,也打印这些(不要也寻找哪些是不同的)

尝试的代码:

import pandas as pd


df = pd.read_excel('testComparisons.xlsx')


#going to check same ones first, and then later on do the differences


result1 = df['finaldata1'].isin(df['check'])

print(result1):

0     True
1    False
2    False
3    False

现在,如果我想打印出上面的结果,仅显示 Abc 作为结果,以下代码不会产生正确的结果 - 我很困惑!

print(df[result1])


  finaldata1 finaldata2 check


0        Abc        Abk   cnl

我认为它应该只返回第一行,第一列,因为这是唯一正确的?相反,它返回整个第一行,而不限于第一列。

然后要反转我的代码,我想我只需要添加波浪号~,它就变成了“is not in”。

我尝试遵循如何像在 SQL 中那样使用“in”和“not in”过滤 Pandas 数据帧,但这导致我真的错了,因为所有答案都变成了错误,这在我运行以下内容时是不正确的:

result1 = df[['finaldata1','finaldata2']].isin(df['check'])


   finaldata1  finaldata2
0       False       False
1       False       False
2       False       False
3       False       False
Python DataFrame 多列 ISIN

评论


答:

0赞 am2 7/13/2023 #1

我不确定,我是否完全理解您的期望,但是您为什么不使用它呢?

finaldata1 = ['Abc', 'Nck', 'xkl', 'mzn']
finaldata2 = ['Abk', 'Nck', 'cnl', 'mzn']
    
check = ['cnl', 'Abk', 'Abc']
        
same_finaldata1 = set(finaldata1) & set(check)
same_finaldata2 = set(finaldata2) & set(check)

print (same_finaldata1, same_finaldata2)