J'ai une série de nom de ville à Pandas Dataframe. Pour cela, je dois trouver l'adresse de la ville particulière et les stocker à une colonne séparée dans le même Dataframe. La colonne de la ville contient également des valeurs NaN. Je reçois une adresse pour un lieu / nom de ville donné séparément. Mais cela ne fonctionne pas dans une pandas dataframe Il fonctionne pour le cadre de données, mais renvoie la dernière adresse seule et non pour les 3 villes. Si nous changeons la commande comme ci-dessous, P> data = [['Nan',10],['Madurai',12],['hosur',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
3 Réponses :
Vous pouvez ajouter une colonne avec les adresses de cette manière:
Obtenir une erreur: ValueError: Définition d'un élément de tableau avec une séquence
Le problème est que geolocator.geocode (i) code> renvoie une séquence au lieu d'une valeur. Qu'est-ce que
impression (géolocator.geocode (i)) code> retourne? Je n'ai donc pas vos données, donc je ne peux pas reproduire, mais si vous mettez une chaîne générique dans
df.loc [df.name == i, "adresse"] = 'adresse_string' code> le code fonctionne comme attendu, alors essayez de résoudre cette partie. Peut-être
geolocator.geocode (i) [0] code> suffit ...
Vous obtenez uniquement les dernières valeurs car vous continuez à remplacer Essayez: P> loc code> à chaque fois dans la boucle.
Le
géocodertimedout: le service chronométré code> L'erreur se pose car vous apportez plusieurs demandes au serveur. Vous devriez inclure un
dormir code> entre les demandes. Si vous obtenez toujours cette erreur, jetez un coup d'oeil à ceci: Lien - Évitez le temps d'attente
import pandas as pd
from geopy.geocoders import Nominatim
import time
data = [['madurai',10],['NaN',12],['hosur',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
geolocator = Nominatim(user_agent='test')
address = []
for i in df.Name:
time.sleep(3)
if i == "NaN":
address.append('NaN')
continue
address.append(geolocator.geocode(i))
df['address'] = address
J'ai introduit chronométré entre demandes comme ci-dessous et quelques lignes pour afficher la barre de progression Ça fonctionne maintenant. P> P>