как объединить три словаря, чтобы один ключ имел несколько отдельных значений списка - PullRequest
0 голосов
/ 07 августа 2020

Я использую API Clarifai для получения прогнозов на основе их моделей одежды, цвета и текстуры в рабочем процессе. В настоящее время я анализирую значения каждой из этих моделей. Дело в том, что я хочу сохранить значения каждого из прогнозов для входного URL-адреса как отдельные записи строки в фрейме данных.

Итак, рассмотрите этот URL-адрес

url="https://cdn.jooraccess.com/img/uploads/accounts/206679/images/322.30.S21_1100_1F-a6da8113cfee494cab07808e93889f44.jpg"

Прогнозы, которые я получаю из это я разделяю на три словаря как

Модель текстуры

tex_dict = {
    'https://cdn.jooraccess.com/img/uploads/accounts/206679/images/322.30.S21_1100_1F-a6da8113cfee494cab07808e93889f44.jpg': [
        'Texture Model', 'leather', 'quilted', 'studded'
                                               'knit', 'dandelion', 'rust', 'felted', 'shibori']}

color_dict = {
    'https://cdn.jooraccess.com/img/uploads/accounts/206679/images/322.30.S21_1100_1F-a6da8113cfee494cab07808e93889f44.jpg': [
        'Color Model',
        '#696969, DimGray',
        '#ffffff, White',
        '#2f4f4f, DarkSlateGray']}

и

apparel_dict = {
    'https://cdn.jooraccess.com/img/uploads/accounts/206679/images/322.30.S21_1100_1F-a6da8113cfee494cab07808e93889f44.jpg': [
        'Apparel Model', 'Cross Body Bag', 'Satchel', 'Laptop ag', 'Tote Bag', 'Cross Body Bag', 'Satchel',
        'Laptop Bag', 'Wristlet & Clutch', 'Tote Bag']}

Я пытаюсь добавить эти как три отдельные записи в кадре данных Pandas. Я хочу, чтобы в одном URL было 3 записи для трех разных моделей. Я использую около 30 URL-адресов

  URL  | Model Name | tag1 |tag2 |........tag n|
  URL A| color.     | tag1 |tag2 |........tag n|
  URL A| texture    | tag1 |tag2 |........tag n|
  URL A| Apparel    | tag1 |tag2 |........tag n|
  URL B| color.     | tag1 |tag2 |........tag n|
  URL B| texture    | tag1 |tag2 |........tag n|
  URL B| Apparel    | tag1 |tag2 |........tag n|
  URL C| color.     | tag1 |tag2 |........tag n|
  URL C| texture    | tag1 |tag2 |........tag n|
  URL C| Apparel    | tag1 |tag2 |........tag n|

как я могу этого добиться.

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Если вы поместите словари в список, вы можете построить понимание словаря, которое pandas сможет распознать

df = pd.DataFrame({list(d.keys())[0]: list(d.values())[0] 
    for d in list_with_dicts}).T.reset_index()

Теперь переименуйте столбцы

df.columns = ['url', 'column2'] + ['tag' + str(i) for i in range(1, df.shape[1] - 1)]
0 голосов
/ 09 августа 2020

Вот как я это решил. Это был небольшой обходной путь, но он сработал.

  1. Я получил все прогнозы во фрейме данных, записав их в словарь.
  2. Затем я сгруппировал строки в столбцы . Поскольку у каждого URL-адреса было 3 строки прогнозов, сортировка по URL-адресу сгруппировала их вместе.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...