问题
I have Alcohol_df dataframe in which qualification is a column.
I have created a list as follows:
Graduate_list=['B.tech','b.tech','b-tech','Btech','BE',
'B.E', 'b.e','BACHELOR','bachelor','BSc',
'Bsc','bsc','BSC','BBM']
I did
Alcohol_df['qualification'].isin(Graduate_list)
to find which columns contains the elements from the list.
I want to do some operation on the dataframe if its value is in the list.I did
if ((Alcohol_df['qualification'].isin(Graduate_list)):
But getting this error
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Kindly help me solve this
回答1:
I think you need any (return True if at least one value is True) or all (return True if all values are Trues) for return scalar, because else it return boolean Series:
if (Alcohol_df['qualification'].isin(Graduate_list).any()):
Sample:
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')
If need select DataFrame by boolean Series use boolean indexing:
df1 = Alcohol_df[Alcohol_df['qualification'].isin(Graduate_list)]
print (df1)
B qualification
0 4 B.tech
2 6 Btech
来源:https://stackoverflow.com/questions/43582154/how-to-check-for-boolean-condition-in-pandas-dataframe