Sjekk en dataframe kolonne for å se om en bool hvis True / False, hvis False, geokode bare de verdiene

stemmer
0

Jeg bruker [geocoder python API bibliotek] [1]. Jeg har en pandaer dataframe kolonne med boolean True / False basert på om jeg allerede har en bestemt adresse geokodes eller ikke. Er det en måte å endre min eksisterende kode for å Geocode basert på om jeg har det geokodes eller ikke?

Akkurat nå alt den gjør er å skrive ut en sann uttalelse, og deretter geografiske koder alt, uavhengig av boolean jeg har. Hjelp vær så snill!

Her er en annen måte å si det:

Jeg har en dataframe av Tweets. Hvis en Tweet ble geokodes, har jeg merket at Tweet med en ekte (hvis den har blitt geokodes) eller usant (hvis det ikke har vært geokodes). Det jeg prøver å gjøre er å sjekke om kolonnen er sant, skrive ut denne raden. Annet hvis denne raden er False, så send det inn i min for loop å geokodes. Jeg vil redigere det opprinnelige innlegget for en inngang.

Her er min Eksisterende kode:

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 

Her er et eksempel på JSON-fil som et innspill:

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

}

Publisert på 12/06/2018 klokken 19:31
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Den enkleste måten er å gå over datasettet, og hvis det ikke er coordsnøkkelen, legg det:

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

Deretter konvertere den til en dataframe.

Hvis du allerede har det som en dataframe:

df.loc[df['coords'] == False, 'coords'] = geocoder.osm(df['location_x']).latlang
Svarte 12/06/2018 kl. 20:10
kilden bruker

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