Проверьте, находится ли строка в кадре данных pandas

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

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

ValueError: Значение истины серии неоднозначно. Используйте a.empty, a.bool(), a.item(), a.any() или 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"

Ответы

Ответ 1

a['Names'].str.contains('Mel') вернет вектор-индикатор булевых значений size 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")

Ответ 2

Вы должны использовать 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

Ответ 3

Вы должны проверить значение вашей строки кода, как

if(len(a['Names'].str.contains('Mel'))>0):
    print("Name Present")