Check een dataframe kolom om te zien of een bool als waar / onwaar, als False, geocode alleen die waarden

stemmen
0

Ik gebruik de [geocoder python API bibliotheek] [1]. Ik heb een panda dataframe kolom boolean True / False gebaseerd op als ik al dat bepaald adres geocoded of niet. Is er een manier om mijn bestaande code te wijzigen om geocoderen gebaseerd op als ik heb het geocoded of niet?

Op dit moment is alles wat het doet is het afdrukken van een ware uitspraak en vervolgens geocodes alles, ongeacht de boolean ik heb. Help alsjeblieft!

Hier is een andere manier om het te zetten:

Ik heb een dataframe van Tweets. Als een Tweet werd geocoded, heb ik gemerkt dat met een tweet True (als deze is geocoded) of False (Als het niet is geocoded). Wat ik probeer te doen is te controleren of de kolom is True, uit te printen die rij. Anders als die rij is False, stuur het dan in mijn lus te gegeocodeerd. Ik zal het oorspronkelijke bericht voor een invoer te bewerken.

Hier is mijn exisiting code:

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 

Hier is een voorbeeld van de JSON-bestand als input:

{
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
        }
    }
 ]

}

De vraag is gesteld op 12/06/2018 om 19:31
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

De eenvoudigste manier is om te lopen over je data set, en als er geen coordssleutel, voeg het toe:

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

Dan, om te zetten in een dataframe.

Als je het al als een dataframe:

df.loc[df['coords'] == False, 'coords'] = geocoder.osm(df['location_x']).latlang
antwoordde op 12/06/2018 om 20:10
bron van user

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