Voici à quoi ressemble mon dataframe, comme vous le voyez dans l'une de mes colonnes dataframe est l'URL et l'autre est le nombre d'horodatages. Lorsque je cours ce code: busiest_hosts[busiest_hosts['host'].str.contains('***.novo.dk')==True]
Je reçois une erreur: error: nothing to repeat at position 0
. Ce que je pense est parce que le premier élément de mon URL est *
. Cela ressemble à un bug python (ma version python est 3.x). J'apprécierais vraiment que quelqu'un puisse m'aider à résoudre ce problème.Pandas: Erreur lors de la recherche d'un astérisque dans une trame de données. Par exemple: busiest_hosts ['host']. Str.contains ('***. Botol.dk')
1
A
Répondre
3
contains
prend la chaîne est une expression regex et interprète le *
comme une commande pour répéter le caractère avant ou expression. Vous voulez échapper à la *
. Et pendant que vous y êtes, échappez également au .
.
busiest_hosts[busiest_hosts['host'].str.contains('\*{3}\.novo\.dk')==True]
Démo
busiest_hosts = pd.DataFrame(dict(host=['***.novo.dk', '007.thegap.com'], timestamp=[16, 45]))
print(busiest_hosts)
host timestamp
0 ***.novo.dk 16
1 007.thegap.com 45
busiest_hosts[busiest_hosts['host'].str.contains('\*{3}\.novo\.dk')==True]
host timestamp
0 ***.novo.dk 16
Ou comme OP me fit remarquer ;-), il suffit de tourner regex hors regex=False
busiest_hosts[busiest_hosts['host'].str.contains('***.novo.dk', regex=False)==True]
Oh je vois. Mais puisque j'ai besoin de vérifier toutes les URLs dans mon dataframe. Puis-je faire 'str.contains (host, regex = False)' – jubins
@JubinSoni Oui !! Ou ça. – piRSquared