我有一个有3列的数据框- 'sport‘'age’'name‘
我有一个列表,里面有不同的运动,声明如下:
sports = ['tennis','cricket','swimming']我想看看这3个项目是否都在体育栏目中。目前,我有以下内容:
if (df['sport']!=sport).any():
print('no, the sports arent in the column')因此,如果列表中的所有体育项目都不在列中,我想打印no。我当前代码的问题是sport列的元素比sport list多得多,所以给了我一个错误。
发布于 2018-07-26 19:36:31
尝试使用isin(sports).all()
Ex:
import pandas as pd
sports = ['tennis','cricket','swimming']
df = pd.DataFrame({'sport': ['tennis','cricket','swimming']})
print(df["sport"].isin(sports).all())发布于 2018-07-26 19:37:38
您可以使用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')发布于 2018-07-26 19:39:25
我认为需要比较set:
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))
Truehttps://stackoverflow.com/questions/51537834
复制相似问题