0
votes

Trouver une localisation à l'aide de l'API Geocoder à Pandas

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 xxx pré>

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


0 commentaires

3 Réponses :


0
votes

Vous pouvez ajouter une colonne avec les adresses de cette manière: xxx


2 commentaires

Obtenir une erreur: ValueError: Définition d'un élément de tableau avec une séquence


Le problème est que geolocator.geocode (i) renvoie une séquence au lieu d'une valeur. Qu'est-ce que impression (géolocator.geocode (i)) 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' le code fonctionne comme attendu, alors essayez de résoudre cette partie. Peut-être geolocator.geocode (i) [0] suffit ...



0
votes

Vous obtenez uniquement les dernières valeurs car vous continuez à remplacer 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

Essayez: P>

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


0 commentaires

0
votes

J'ai introduit chronométré entre demandes comme ci-dessous et quelques lignes pour afficher la barre de progression xxx

Ça fonctionne maintenant.


0 commentaires