Verificați o coloană dataframe pentru a vedea dacă un bool dacă este adevărat / fals, dacă este fals, geocodifica numai acele valori

voturi
0

Sunt folosind [geocoder biblioteca Python API] [1]. Am o coloană de ursi panda dataframe boolean Adevărat / Fals bazat pe dacă am deja acea adresă specială geocodificată sau nu. Există o modalitate de a modifica codul meu existent la geocodificați bazat pe dacă l-am geocodificată sau nu?

Chiar acum tot ce face este imprima o afirmație este adevărată și apoi geocodificări totul, indiferent de boolean am. Ajutati-ma va rog!

Aici este un alt mod de a pune-l:

Am o dataframe de Tweets. Dacă un Tweet a fost geocodificată, am marcat ca un tweet Adevărat (dacă a fost geocodificată) sau fals (În cazul în care nu a fost geocodificată). Ceea ce am încercat să faceți este să verificați dacă coloana este True, imprima acel rând. Altfel, dacă acel rând este falsă, atunci trimite-l în buclă mea pentru a fi geocodificată. Voi edita original post pentru o intrare.

Aici este codul meu existentă:

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 

Aici este un exemplu de fișier JSON ca o intrare:

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

}

Întrebat 12/06/2018 la 19:31
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Cel mai simplu mod este de a merge pe setul de date, iar în cazul în care nu există nici o coordscheie, adauga:

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

Apoi, se transforma intr-un dataframe.

Dacă aveți deja ca dataframe:

df.loc[df['coords'] == False, 'coords'] = geocoder.osm(df['location_x']).latlang
Publicat 12/06/2018 la 20:10
sursa de către utilizator

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