Проверьте, находится ли строка в кадре данных 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")