Применить функцию к Pandas DataFrame - PullRequest
0 голосов
/ 11 февраля 2020

Я работаю над Pandas, и я изо всех сил пытаюсь создать новый столбец с информацией из API по строкам моего фрейма данных.

Столбец "location", который я хочу перебрать, представляет собой серию словари, подобные этому:

{'type': 'Point', 'coordinates': [-0.1394759, 51.5170385]}

Моя функция:

def starbucks(df):
    API_key = os.getenv('API_KEY')
    lat = list(df["location"])[1]["coordinates"][1]
    lon = list(df["location"])[1]["coordinates"][0]
    base_url = "https://maps.googleapis.com/maps/api/place/textsearch/json?"
    endpoint = "query=starbucks&location={0},{1}&radius=1000&key={2}".format(lat, lon, API_key)
    res = requests.get(base_url+endpoint).json()

Как я реализую функцию apply (в настоящее время с ошибкой 'location', 'occurred at index 61'):

sample['testing'] = sample.apply(lambda x: starbucks(x["location"]), axis=1)

Я прочитал несколько постов, касающихся функции применения и документации, но мне все еще чего-то не хватает.

Помощь будет очень признательна!

Спасибо

1 Ответ

0 голосов
/ 11 февраля 2020

Ваша функция ожидает фрейм данных, но вы передаете ему значение. Я думаю, что ваша функция должна быть:

def starbucks(val):
    API_key = os.getenv('API_KEY')
    lat = list(val)[1]["coordinates"][1]
    lon = list(val)[1]["coordinates"][0]
    base_url = "https://maps.googleapis.com/maps/api/place/textsearch/json?"
    endpoint = "query=starbucks&location={0},{1}&radius=1000&key={2}".format(lat, lon, API_key)
    res = requests.get(base_url+endpoint).json()
    return res

Вот еще одна статья, которая даст вам больше примеров того, как использовать apply:
Pandas: Как я могу использовать функцию apply () для одного столбца?

...