2017-04-03 1 views
1

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')

enter image description here

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] 
+1

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

+0

@JubinSoni Oui !! Ou ça. – piRSquared