У меня есть функция, но я хочу понять, что делают следующие строки кода - PullRequest
0 голосов
/ 25 мая 2020

Я получил файл json из запроса api и использовал json_normalize, чтобы преобразовать его в фрейм данных. В одной из колонок, а именно «location.categories», находится список словарей. Это выглядит так:

nearby_venues.loc[0,'venue.categories']

    [{'id': '4bf58dd8d48988d16a941735',
  'name': 'Bakery',
  'pluralName': 'Bakeries',
  'shortName': 'Bakery',
  'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/bakery_',
   'suffix': '.png'},
  'primary': True}]

Мне нужен новый столбец только с коротким именем, например «Пекарня» в качестве значения столбца. Следующая функция выполняет свою работу. Мне нужно понять, что происходит под капотом.

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']

1 Ответ

0 голосов
/ 25 мая 2020

Первый блок кода:

    try:
        categories_list = row['categories']
    except:
        categories_list = row['venue.categories']

делает копию столбца categories, а в случае сбоя venue.categories в переменную categories_list.

второй блок:

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

return None, если в столбце нет данных, иначе возвращается первый элемент списка (есть только один), а затем возвращается значение key внутри словаря.

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