C'est une question simple mais je ne sais pas pourquoi je ne peux pas comparer si cadrocly. je veux imprimer "exiger" si un nom spécifique existe dans df p> Par exemple, je veux vérifier si Marta existe dans df ['B'] p> code: p> quand j'utilise Je reviendrai faux sur chaque ligne, pourquoi? Devrais-je comparer ce type de chaîne quelque chose de manière différente? p> EDIT:
J'ai besoin d'utiliser EDIT: P> . bool () code> au lieu de tout () code> je reçois une erreur:
ValueError: La valeur de vérité d'une série est ambiguë. Utilisez A.Vepty, a.bool (), a.item (), A.ANY () ou a.all (). Code> P> si code> instruction car dans mon code au lieu de Imprimer code> Mon code doit assumer les variables, normalement, je voudrais utiliser différentes méthodes.
Si mon string = 'marta' code> Ça fonctionne bien mais avec une chaîne supplémentaire non p> new code:
string='www\marta2'
if df['B'].str.rfind(string).any():
print('exist')
else:
print('not exist')
but it compares everything, so even if one letter is in column it will print 'exist'
3 Réponses :
Si vous souhaitez vérifier si la chaîne existe du tout dans tout DF, utilisez Si vous voulez Vérifiez si la chaîne existe pour chaque ligne, vous pouvez créer une nouvelle colonne et ne pas avoir à utiliser si l'instruction P> modifier: j'ai essayé cela et ça marche aussi longtemps que La chaîne est exactement ce que vous recherchez. P> n'importe quel () code> au lieu de tout () code>. string='www\marta2'
if df['name'].str.contains(string,regex=False).any():
print('exist')
else:
print('not exist')
Hey,. S'il vous plaît voir mes modifications, je dois utiliser si de toute façon, car c'est vrai mon var = 1 ou 0 dans mon code réel
Pouvez-vous me donner quelques exemples de vos cordes? Cela pourrait être un problème d'être résolu avec regex
ma chaîne ressemble à la même chose que dans mon exemple de chaîne de var
Est-ce la chaîne exacte que vous recherchez dans le Dataframe? S'il vous plaît voir mon édition
J'ai besoin de vérifier si cette chaîne spécifique existe dans une colonne spécifique, je n'ai pas besoin de choisir des lignes
Peut-être peut-être que cela vous aidera: la boucle pour code> boucle inclut df ["B"]. Valeurs code> qui renvoie des valeurs de matrice de colonne B code>. Maintenant, si vous avez la matrice, vous pouvez la boucler et obtenir ainsi la sortie.
Dans la condition si code> instruction, je viens de comparé chacune des valeurs de la colonne B code>. RFind () Code> Compte tenu de la sortie de la sortie de chaîne ou de la sous-chaîne correspondante partiellement.
C'est ainsi la magie. P> p>
manière intéressante, pourriez-vous l'expliquer? son travail pour moi
@systoo j'ai ajouté l'explication à la réponse. S'il vous plaît vérifier si vous l'avez eu. Acceptez la réponse si cela vous aide pour vous permettre également de uplifier les réponses ici. Cela encourage qui répond.
@systoo Merci pour votre uppote. Si la réponse est utile, veuillez l'accepter.
Y a-t-il une option pour éviter de boucle?
@Synseto Quel est le problème avec la boucle? En fin de compte, vous devez faire boucle à travers les éléments exacts?
Le problème est que je reçois une réponse pour chaque ligne de Dataframe, je n'ai besoin de connaître qu'une seule réponse si cette chaîne existe dans la colonne ou non. mon code fonctionne bien mais seulement lorsque la chaîne est excessive la même que dans la colonne
@sysgneto mais ma réponse satisfait à votre question. Vous n'avez rien mentionné dans la question ou donné un échantillon des données que vous recherchez. Ce que vous avez suggéré, c'est ce que j'ai essayé de mon côté.
@sygneto Je suppose que j'ai tronqué la boucle avec la déclaration code> Break code> si vous pouvez voir.
La fonction RFind dans ce cas ne fonctionnera pas car elle imprimera «existe» même lorsque une seule lettre est la même. Je vais essayer une approche différente pour modifier cette chaîne,
Réponse sur ma question:
Pour ne récupérer qu'une seule réponse existent ou non dans la colonne, le bon moyen d'utiliser La réponse est de préparer une chaîne que je comparais à recevoir un résultat attendu P > df.str.Contains () code>, comme nous savons que str.contains ne comparant que la chaîne entière, c'est pourquoi mon premier code ne fonctionne pas.
Deuxièmement, il est d'utiliser RFind code> mais il sera toujours vrai parce que cette fonction comparaît des lettres simples dans mon cas. string='www\marta2'
new_string=string.split('\\')[-1][0:5]
if df['B'].str.contains(new_string,regex=False).any():
print('exist')
else:
print('not exist')
Votre problème est que
'marta' code> ne contient pas'www \ marta2' code>. Ceci:string = 'Mart'; Imprimer (DF ['B']. str.contains (string, regex = false). Nan ()) code> imprimervrai code> ...Vous pouvez voir dans ma réponse, la boucle prendra fin si la valeur est trouvée. Vous n'avez pas besoin de suivre les éléments plus loin, si la condition est satisfaite.