熊猫-检查列表中的所有元素是否都在列中

我有一个包含3列的数据框-'sport''age''name'

我有一个包含不同运动项目的列表,声明如下:

sports = ['tennis','cricket','swimming']

我想检查一下是否所有3种运动都在运动栏中。目前,我有这个:

if (df['sport']!=sport).any():
    print('no, the sports arent in the column')

因此,如果列表中的所有运动不在列中,我要打印否。我当前代码的问题是,运动列中的元素比运动列表中的元素多得多,因此给我一个错误。


慕桂英4014372
浏览 130回答 3
3回答

扬帆大鱼

尝试使用 isin(sports).all()前任:import pandas as pdsports = ['tennis','cricket','swimming']df = pd.DataFrame({'sport': ['tennis','cricket','swimming']})print(df["sport"].isin(sports).all())

婷婷同学_

您可以使用set.intersection:if not set(df['sport']).intersection(set(sports)):     print('no, the sports arent in the column')更有效地,您可以使用set.issubset:if not set(sports).issubset(set(df['sport'])):     print('no, the sports arent in the column')

哈士奇WWW

我相信需要比较sets:sports = ['tennis','cricket','swimming']df = pd.DataFrame({'sport': ['tennis','cricket']})print (df)     sport0   tennis1  cricketprint(set(df['sport']) >= set(sports))Falsedf = pd.DataFrame({'sport': ['tennis','cricket','swimming']})print (df)      sport0    tennis1   cricket2  swimmingprint(set(df['sport']) >= set(sports))Truedf = pd.DataFrame({'sport': ['tennis','cricket','swimming', 'another']})print (df)      sport0    tennis1   cricket2  swimming3   anotherprint(set(df['sport']) >= set(sports))True
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python