Sprawdź kolumnę dataframe aby sprawdzić, czy bool jeśli Prawda / Fałsz, jeśli False, Geokodując tylko te wartości

głosy
0

Używam [geocoder pyton API biblioteki] [1]. Mam kolumny pandy dataframe Boolean true / false oparciu jeśli mam już, że dany adres geokodowane czy nie. Czy istnieje sposób na zmianę mojego istniejącego kodu do Geokodując podstawie gdybym to geokodowane czy nie?

Teraz wszystko robi to wydrukować prawdziwe stwierdzenie, a następnie geocodes wszystko, bez względu na wartość logiczną mam. Prosimy o pomoc!

Oto kolejny sposób, aby umieścić go:

Mam dataframe tweets. Jeśli tweet został geokodowane, mam zaznaczone, że Tweet z prawdą (jeśli został geokodowane) lub false (jeśli nie został on geokodowane). Co próbuję zrobić, to sprawdzić, czy kolumna jest prawda, wydrukować tym wierszu. Else if że rząd jest False, a następnie wysłać go do mojego pętli być geokodowane. Będę edytować oryginalny post na wejście.

Oto mój kod objąć istniejącymi:

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 

Oto przykład pliku JSON jako dane wejściowe:

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

}

Utwórz 12/06/2018 o 19:31
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Najprostszym sposobem jest spacer nad zestawem danych, a jeśli nie ma coordsklucz, dodaj go:

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

Następnie przekształcić go w dataframe.

Jeśli masz już go jako dataframe:

df.loc[df['coords'] == False, 'coords'] = geocoder.osm(df['location_x']).latlang
Odpowiedział 12/06/2018 o 20:10
źródło użytkownik

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