为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英4014372 2021-05-01 00:36:12
我有一个包含3列的数据框-'sport''age''name'我有一个包含不同运动项目的列表,声明如下:sports = ['tennis','cricket','swimming']我想检查一下是否所有3种运动都在运动栏中。目前,我有这个:if (df['sport']!=sport).any():     print('no, the sports arent in the column')因此,如果列表中的所有运动不在列中,我要打印否。我当前代码的问题是,运动列中的元素比运动列表中的元素多得多,因此给我一个错误。
查看完整描述

3 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

尝试使用 isin(sports).all()


前任:


import pandas as pd

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

df = pd.DataFrame({'sport': ['tennis','cricket','swimming']})

print(df["sport"].isin(sports).all())


查看完整回答
反对 回复 2021-05-11
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您可以使用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')


查看完整回答
反对 回复 2021-05-11
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

我相信需要比较sets:


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

df = pd.DataFrame({'sport': ['tennis','cricket']})

print (df)

     sport

0   tennis

1  cricket


print(set(df['sport']) >= set(sports))

False


df = pd.DataFrame({'sport': ['tennis','cricket','swimming']})

print (df)

      sport

0    tennis

1   cricket

2  swimming


print(set(df['sport']) >= set(sports))

True


df = pd.DataFrame({'sport': ['tennis','cricket','swimming', 'another']})

print (df)

      sport

0    tennis

1   cricket

2  swimming

3   another


print(set(df['sport']) >= set(sports))

True


查看完整回答
反对 回复 2021-05-11
  • 3 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信