Создание нового столбца из поиска API с помощью groupby - PullRequest
0 голосов
/ 06 июня 2019

У меня есть дата с датой погоды, которая выглядит следующим образом:

+----+------------+----------+-----------+
| ID | Station_ID | Latitude | Longitude |
+----+------------+----------+-----------+
|  0 | 6010400    |    52.93 |    -82.43 |
|  1 | 6010400    |    52.93 |    -82.43 |
|  2 | 6010400    |    52.93 |    -82.43 |
|  3 | 616I001    |    45.07 |    -77.88 |
|  4 | 616I001    |    45.07 |    -77.88 |
|  5 | 616I001    |    45.07 |    -77.88 |
+----+------------+----------+-----------+

Я хочу создать новый столбец с именем postal_code, используя поиск API на основе значений широты и долготы. Я не могу выполнить поиск для каждой строки в кадре данных, так как это было бы неэффективно, поскольку существует более 500 000 строк и только 186 уникальных Station_IDs. Это также невозможно из-за ограничения скорости доступа к API, который мне нужно использовать.

Я считаю, что мне нужно выполнить групповое преобразование, но не могу понять, как заставить его работать правильно.

Любая помощь с этим будет принята с благодарностью.

1 Ответ

0 голосов
/ 06 июня 2019

Полагаю, вы можете использовать групповую обработку только для агрегации, а это не то, что вам нужно.

Сначала объедините «Широта» и «Долгота».Он дает новый столбец с кортежами.

df['coordinates'] = list(zip(df['Latitude'],df['Longitude']))

Затем вы можете использовать этот столбец «координаты» для создания всех уникальных значений (Широта, Долгота), используя тип данных set, поэтому он не содержит дубликатов..

set(list(df['coordinates']))

Затем извлеките postal_codes этих координат, используя вызовы API, как вы сказали, и сохраните их как dict.Затем вы можете использовать этот диктовку для заполнения почтовых индексов для каждой строки.

postal_code_dict = {'key':'value'} #sample dictionary
df['postal_code'] = df['coordinates'].apply(lambda x: postal_code_dict[x])

Надеюсь, это поможет.

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