2015-06-19 2 views
14

Я хотел бы посмотреть, существует ли конкретная строка в определенном столбце в моей файловой системе.Проверьте, нет ли строки в pandas dataframe

Я получаю ошибку

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

import pandas as pd 

BabyDataSet = [('Bob', 968), ('Jessica', 155), ('Mary', 77), ('John', 578), ('Mel', 973)] 

a = pd.DataFrame(data=BabyDataSet, columns=['Names', 'Births']) 

if a['Names'].str.contains('Mel'): 
    print "Mel is there" 

ответ

19

a['Names'].str.contains('Mel') возвращает вектор индикаторного логических значений размера len(BabyDataSet)

Таким образом, вы можете использовать

mel_count=a['Names'].str.contains('Mel').sum() 
if mel_count>0: 
    print ("There are {m} Mels".format(m=mel_count)) 

Или any(), если вы не заботитесь сколько записей соответствуют запросу

if a['Names'].str.contains('Mel').any(): 
    print ("Mel is there") 
10

Вы должны использовать any()

In [98]: a['Names'].str.contains('Mel').any() 
Out[98]: True 

In [99]: if a['Names'].str.contains('Mel').any(): 
    ....:  print "Mel is there" 
    ....: 
Mel is there 

a['Names'].str.contains('Mel') дает ряд BOOL значения

In [100]: a['Names'].str.contains('Mel') 
Out[100]: 
0 False 
1 False 
2 False 
3 False 
4  True 
Name: Names, dtype: bool 
+0

Кто ты, @JohnGalt? –

Смежные вопросы