Vérifiez une colonne de dataframe pour voir si un bool Vrai / Faux, si elle est fausse, géocodage uniquement les valeurs

voix
0

J'utilise le [géocodage bibliothèque API python] [1]. J'ai une colonne de dataframe de pandas géants de booléenne Vrai / Faux basé sur si je possède déjà cette adresse particulière géocodées ou non. Est-il possible de modifier mon code existant géocodage basé sur si je l'ai géocodées ou non?

En ce moment, tout ce qu'il fait est d'imprimer une déclaration véridique et GÉOCODES alors tout, quelle que soit la valeur booléenne je. Aidez-moi, s'il vous plaît!

Voici une autre façon de le mettre:

J'ai un dataframe de Tweets. Si un Tweet a été géocodées, j'ai marqué que Tweet avec un vrai (si elle a été géocodées) ou faux (si elle n'a pas été géocodées). Ce que je suis en train de faire est de vérifier si la colonne est vrai, imprimer cette ligne. Sinon, si cette ligne est faux, puis l'envoyer dans ma boucle à géocodées. Je modifier le message original pour une entrée.

Voici mon code exisiting:

for d in tweets2['Exist']:
    if d is True:
        print d
    elif d.any() is False:
        coord = []
        for index, row in tweets2.iterrows():
            print(row['location_x'])
            time.sleep(1.01)
            g = geocoder.osm(row['location_x'])
            geo = g.latlng
            print(geo)
            coord.append(geo)
    else:
        pass 

Voici un exemple du fichier JSON en entrée:

{
data: [
    {
        user_id: 3299796214, 
        features: {
            screen_name: SaveOurSparrows, 
            text: Details confirmed for inquiry into #INEOS #Derbyshire #Fracking site! \n\nAnti Fracking, #keepitintheground #wesaidno\u2026, 
            location: West Pennine Moors AONB SSSI, 
            tweets: 3, 
            geo_type: User location, 
            primary_geo: West Pennine Moors AONB SSSI, 
            id: 3299796214, 
            name: SaveOurSparrows,
            Exist: True
        }
    }, 
    {
        user_id: 3302831409, 
        features: {
            screen_name: ProjectLower, 
            text: Cutting down on energy costs is the dream for many #smallbusinesses, but to put ideas into practice isn\u2019t always ea\u2026, 
            location: Manchester, 
            tweets: 1, 
            geo_type: User location, 
            primary_geo: Manchester, 
            id: 3302831409, 
            name: Project Lower,
            Exist: False
        }
    }, 
    {
        user_id: 2205129714, 
        features: {
            screen_name: AmbCanHaiti, 
            text: Petit-d\u00e9jeuner causerie le mercredi 28 mars 2018 \u00e0 l'h\u00f4tel Montana sur l'\u00e9nergie #micror\u00e9seaux #microgrids\u2026, 
            location: Haiti, 
            tweets: 1, 
            geo_type: User location, 
            primary_geo: Haiti, 
            id: 2205129714, 
            name: Canada en Ha\u00efti,
            Exist: False
        }
    }
 ]

}

Créé 12/06/2018 à 19:31
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

La façon la plus simple est de marcher sur l' ensemble de données, et s'il n'y a pas de coordsclé, ajoutez - le:

for data in your_data_set['data']:
    data['coords'] = data.setdefault('coords',  geocoder.osm(data'location_x']).latlang)

Ensuite, le convertir en une trame de données.

Si vous l'avez déjà comme dataframe:

df.loc[df['coords'] == False, 'coords'] = geocoder.osm(df['location_x']).latlang
Créé 12/06/2018 à 20:10
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more