我有Alcohol_df
个数据框,其中限定条件是一列。
我创建了一个列表如下:
Graduate_list=['B.tech','b.tech','b-tech','Btech','BE',
'B.E', 'b.e','BACHELOR','bachelor','BSc',
'Bsc','bsc','BSC','BBM']
我做了
Alcohol_df['qualification'].isin(Graduate_list)
查找哪些列包含列表中的元素。
如果数据框的值在列表中,我想对数据帧进行一些操作。我做了
if ((Alcohol_df['qualification'].isin(Graduate_list)):
但是收到此错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
请帮我解决这个问题
答案 0 :(得分:2)
我认为您需要any
(如果至少有一个值为True
,则返回True
)或all
(如果所有值均为{True
则返回True
1}} s)返回标量,因为它返回boolean Series
:
if (Alcohol_df['qualification'].isin(Graduate_list).any()):
样品:
Alcohol_df = pd.DataFrame({'qualification':['B.tech','a','Btech'],
'B':[4,5,6]})
print (Alcohol_df)
B qualification
0 4 B.tech
1 5 a
2 6 Btech
print (Alcohol_df['qualification'].isin(Graduate_list))
0 True
1 False
2 True
Name: qualification, dtype: bool
if (Alcohol_df['qualification'].isin(Graduate_list).any()):
print ('bingo')
如果需要DataFrame
选择boolean Series
,请使用boolean indexing
:
df1 = Alcohol_df[Alcohol_df['qualification'].isin(Graduate_list)]
print (df1)
B qualification
0 4 B.tech
2 6 Btech