Проверьте столбец dataframe, чтобы увидеть, если логическое значение, если True / False, если False, то геокодировать только те значения

голоса
0

Я использую [геокодер библиотеку Python API] [1]. У меня есть столбец панды dataframe булевой True / False, основываясь на, если у меня уже есть, что конкретный адрес геокодированные или нет. Есть ли способ, чтобы изменить мой существующий код для геокодирования на основе, если я это геокодированный или нет?

Сейчас все это делает печать верное утверждение, а затем геокодированием все, независимо от логического значения у меня есть. Помогите, пожалуйста!

Вот еще один способ положить его:

У меня есть dataframe твитов. Если Твитнуть была привязана к местности, я отметил, что чирикать с истинным (если оно было геокодированной) или ЛОЖЬ (если она не была привязана к местности). То, что я пытаюсь сделать, это проверить, если столбец Правда, распечатать эту строку. Иначе, если эта строка Ложная, а затем отправить его в мой цикл, чтобы быть привязаны к местности. Я буду редактировать исходный пост для входа.

Вот мой код существующего места:

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 

Ниже приведен пример файла JSON в качестве входных данных:

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

}

Задан 12/06/2018 в 19:31
источник пользователем
На других языках...                            


1 ответов

голоса
0

Самый простой способ идти над набором данных, а если нет coordsключа, добавьте его:

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

Затем, преобразовать его в dataframe.

Если у вас уже есть как dataframe:

df.loc[df['coords'] == False, 'coords'] = geocoder.osm(df['location_x']).latlang
Ответил 12/06/2018 в 20:10
источник пользователем

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