使用Python IN运算符检查DataFrame中是否存在多个指定值
错误原因
原代码的['Tom', 'Lee', 'Sara'] in df.values逻辑是将整个长度为3的列表作为单个元素,和df.values(二维数组,每个成员是长度为2的行数据)做匹配,完全无法命中对应值,还会触发元素级比较失败的未来警告。
实现方案
场景1:验证三个值全部存在于DataFrame任意位置
借助numpy的isin方法批量判断所有目标值是否都在df的取值范围内:
import pandas as pd import numpy as np details = { 'Name' : ['Tom', 'Lee', 'Sara', 'Shivangi', 'Priya', 'Swapnil'], 'University' : ['BHU', 'JNU', 'DU', 'BHU', 'Geu', 'Geu'], } df = pd.DataFrame(details, columns = ['Name', 'University']) target = ['Tom', 'Lee', 'Sara'] # 判断所有目标值是否都存在于df中 if np.isin(target, df.values).all(): print("\nYes, These values exist in Dataframe") else: print("\nNo,value not exists ")
场景2:验证三个值全部存在于指定的Name列(匹配你的示例场景)
直接针对单列做判断,执行效率更高:
target = ['Tom', 'Lee', 'Sara'] if df['Name'].isin(target).nunique() == len(target): print("\nYes, These values exist in Dataframe") else: print("\nNo,value not exists ")
内容的提问来源于stack exchange,提问作者PyBoss
相关产品推荐
相关产品推荐

