如何在pandas dataframe

时间:2017-04-24 07:27:45

标签: python pandas

我有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().

请帮我解决这个问题

1 个答案:

答案 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