Скомпилируйте один DataFrame из последовательности циклов меньших DataFrames - PullRequest
0 голосов
/ 12 января 2019

Я перебираю список из 103 URL-адресов FourSquare, чтобы найти «Кофейни».
Я могу создать DataFrame для каждого URL-адреса и распечатать каждый DataFrame, пока я перебираю список (пример вывода внизу).

Я не могу понять, как добавить DataFrame для каждого URL в один DataFrame, когда я перебираю список. Моя цель - собрать один DataFrame из тех DataFrames, которые я печатаю.

x = 0

while x < 103 :

    results = requests.get(URLs[x]).json()

    def get_category_type(row):
        try:
            categories_list = row['categories']
        except:
            categories_list = row['venue.categories']

        if len(categories_list) == 0:
            return None
        else:
            return categories_list[0]['name']

    venues = results['response']['groups'][0]['items']

    nearby_venues = json_normalize(venues) # flatten JSON

    # filter columns
    filtered_columns = ['venue.name', 'venue.categories', 'venue.location.lat', 'venue.location.lng']
    nearby_venues =nearby_venues.loc[:, filtered_columns]

    # filter the category for each row
    nearby_venues['venue.categories'] = nearby_venues.apply(get_category_type, axis=1)

    # clean columns
    nearby_venues.columns = [col.split(".")[-1] for col in nearby_venues.columns]

    dfven = nearby_venues.loc[nearby_venues['categories'] == 'Coffee Shop']

    print(x, '!!!', dfven, '\n')

    x = x + 1

Вот некоторые результаты (я получаю полные результаты):

0 !!!                  name   categories       lat        lng
5         Tim Hortons  Coffee Shop  43.80200 -79.198169
8  Tim Hortons / Esso  Coffee Shop  43.80166 -79.199133 

1 !!! Empty DataFrame
Columns: [name, categories, lat, lng]
Index: [] 

2 !!!            name   categories        lat        lng
5     Starbucks  Coffee Shop  43.770367 -79.186313
18  Tim Hortons  Coffee Shop  43.769591 -79.187081 

3 !!!             name   categories        lat        lng
0      Starbucks  Coffee Shop  43.770037 -79.221156
4  Country Style  Coffee Shop  43.773716 -79.207027 

1 Ответ

0 голосов
/ 12 января 2019

Я прошу прощения, если это плохая форма или нарушение этикета, но я решил свою проблему и решил, что я должен опубликовать. Возможно, попытка сформулировать проблему для StackOverflow помогла мне решить ее?

Сначала я узнал, как игнорировать пустые фреймы данных:

dfven = nearby_venues.loc[nearby_venues['categories'] == 'Coffee Shop']

if dfven.empty == False :

Как только я добавил этот код, мой печатный вывод представлял собой чистую серию идентично отформатированных фреймов данных, поэтому их легко было добавить в один фрейм данных. Я создал фрейм данных в начале моего кода (merge = pd.DataFrame ()), а затем добавил эту строку, где я печатал.

merge = merge.append(dfven)

Теперь мой вывод идеален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...