web-dev-qa-db-fra.com

Vérifiez si la chaîne est dans un pandas dataframe

J'aimerais voir si une chaîne particulière existe dans une colonne particulière de mon cadre de données.

Je reçois l'erreur

ValueError: la valeur de vérité d'une série est ambiguë. Utilisez a.empty, a.bool (), a.item (), a.any () ou 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"
42
user2242044

a['Names'].str.contains('Mel') renvoie un vecteur indicateur des valeurs booléennes de taille len(BabyDataSet)

Par conséquent, vous pouvez utiliser

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

Ou any(), si le nombre d'enregistrements correspondant à votre requête ne vous intéresse pas

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

Vous devriez utiliser 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') vous donne une série de valeurs bool

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