2017-08-17 1 views
1

Voici mon code, peu importe ce que je fais je continue à obtenir l'erreur et suivi toutes les solutions liées à l'index, quelqu'un peut-il m'aider?ValueError: Ne peut comparer que des objets de la série identiques

site = pd.read_csv('../data/survey_site.csv') 
sampled = site.sample(n=1) 

site = site.reset_index(drop=True) 
sampled = sampled.reset_index(drop=True) 

mask = site.mask(site['name'] == sampled['name']) 
+1

Try 'masque = site.mask (site [ 'nom'] == échantillonné [ 'nom']. Presser ()) ' – piRSquared

+0

Aaaaaaand ça marche ...... Si vous pouviez donner des indices sur la raison pour laquelle le problème est apparu, je serais très heureux, mais semble être avec ce que' sample' renvoie. Merci beaucoup. Aussi, je ne sais pas comment donner des points pour votre réponse puisque c'est la toute première fois que je pose une question, Si vous pouviez me dire comment je serais reconnaissant – Skirmitch

+0

Exemple renvoie un dataframe. Alors l'échantillon ['name'] est une série. Squeeze était un moyen facile de le transformer en scalaire. – piRSquared

Répondre

1

La question est la comparaison entre site['name'] et sample['name'] est entre deux pd.Series. Vous pouvez contourner cela en faisant de l'un d'entre eux un scalaire. Cependant, j'ai remarqué que vous avez pris un sample de longueur 1. Je suppose que vous pensiez que lorsque vous avez pris sample['name'] que ce serait une valeur scalaire. Mais à la place c'est une série de longueur. Donc vous avez juste besoin de faire est un scalaire.

Option 1

mask = site.mask(site['name'] == sampled['name'].squeeze()) 

Option 2

mask = site.mask(site['name'] == sampled.loc[0, 'name'])