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

2024-05-23 22:45:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有3列的数据框-“体育”“年龄”“姓名”

我有一份不同运动项目的清单,声明如下:

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

我想看看这三个项目是否都在体育专栏里。目前,我有这个:

^{pr2}$

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


Tags: 数据项目声明元素列表姓名年龄sports
3条回答

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

例如:

import pandas as pd
sports = ['tennis','cricket','swimming']
df = pd.DataFrame({'sport': ['tennis','cricket','swimming']})
print(df["sport"].isin(sports).all())

我认为需要比较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

您可以使用set.intersection

if not set(df['sport']).intersection(set(sports)):
    print('no, the sports arent in the column')

更有效地,您可以使用set.issubset

^{pr2}$

相关问题 更多 >