首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas -检查列表中的所有元素是否都在一列中

问Pandas -检查列表中的所有元素是否都在一列中
EN

Stack Overflow用户
提问于 2018-07-26 19:33:29
回答 3查看 418关注 0票数 2

我有一个有3列的数据框- 'sport‘'age’'name‘

我有一个列表,里面有不同的运动,声明如下:

代码语言:javascript
复制
sports = ['tennis','cricket','swimming']

我想看看这3个项目是否都在体育栏目中。目前,我有以下内容:

代码语言:javascript
复制
if (df['sport']!=sport).any():
    print('no, the sports arent in the column')

因此,如果列表中的所有体育项目都不在列中,我想打印no。我当前代码的问题是sport列的元素比sport list多得多,所以给了我一个错误。

EN

回答 3

Stack Overflow用户

发布于 2018-07-26 19:36:31

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

Ex:

代码语言:javascript
复制
import pandas as pd
sports = ['tennis','cricket','swimming']
df = pd.DataFrame({'sport': ['tennis','cricket','swimming']})
print(df["sport"].isin(sports).all())
票数 3
EN

Stack Overflow用户

发布于 2018-07-26 19:37:38

您可以使用set.intersection

代码语言:javascript
复制
if not set(df['sport']).intersection(set(sports)):
    print('no, the sports arent in the column')

您可以更高效地使用set.issubset

代码语言:javascript
复制
if not set(sports).issubset(set(df['sport'])):
    print('no, the sports arent in the column')
票数 1
EN

Stack Overflow用户

发布于 2018-07-26 19:39:25

我认为需要比较set:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51537834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档