Controllare una colonna dataframe per vedere se un bool se Vero / Falso, se False, geocode solo quei valori

voti
0

Sto usando il [libreria Python API geocoding] [1]. Ho una colonna panda dataframe di booleano Vero / Falso in base a se ho già quel particolare indirizzo di geocoding o meno. Esiste un modo per modificare il mio codice esistente per geocoding in base a se ce l'ho geocodificato o no?

In questo momento tutto ciò che fa è stampare una dichiarazione vera e poi il geocoding tutto, a prescindere dal valore booleano che ho. Aiuto per favore!

Ecco un altro modo per dirla:

Ho un dataframe di Tweets. Se un Tweet è stato sottoposto a geocoding, ho segnato che Tweet con una vera (se è stato geocodificato) o Falso (se non è stato geocodificato). Quello che sto cercando di fare è controllare se la colonna è vero, stampare quella riga. Altrimenti, se la riga è False, quindi inviarlo nel mio ciclo for da sottoporre a geocoding. Mi permetterà di modificare il post originale per un ingresso.

Ecco il mio codice 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 

Ecco un esempio del file JSON come 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
        }
    }
 ]

}

È pubblicato 12/06/2018 alle 19:31
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Il modo più semplice è quello di camminare sopra il set di dati, e se non v'è alcuna coordschiave, inserirlo:

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

Poi, convertirlo in un dataframe.

Se hai già come un dataframe:

df.loc[df['coords'] == False, 'coords'] = geocoder.osm(df['location_x']).latlang
Risposto il 12/06/2018 a 20:10
fonte dall'utente

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