Как сформировать DataFrame из словаря и списков

[{'dimensions': [{'id': '240837577',
    'name': 'Ключница / ключница карманная / ключница женская / ключница из натуральной кожи / ключница на молнии МАХАОН (Париж, Эйфелева башня)'}],
  'metrics': [1]},
 {'dimensions': [{'id': '240836242',
    'name': 'Кошелек женский / из натуральной кожи / портмоне / бумажник / кожаный / маленький МАХАОН (Париж, Эйфелева башня)'}],
  'metrics': [1]},
 {'dimensions': [{'id': '240837379',
    'name': 'Ключница / ключница карманная / ключница женская / ключница из натуральной кожи / ключница на молнии МАХАОН (Ирисы)'}],
  'metrics': [0]},
 {'dimensions': [{'id': '240836803',
    'name': 'Футляр для очков / чехол для солнцезащитных очков / очечник на магните / кожаный женский МАХАОН (Геометрическая абстракция)'}],
  'metrics': [0]},
 {'dimensions': [{'id': '243718237',
    'name': 'Сумка кросс боди кожаная / женская сумка из натуральной кожи / классическая повседневная сумка / с рисунком / с ручкой / через плечо / на молнии МАХАОН (Париж, Эйфелева башня)'}],
  'metrics': [0]}]

Вот эти данные необходимо представить в виде датафрейма с колонками:

  • id
  • name
  • metrics

После написания команды:

report = pd.DataFrame(b)
report

формируется датафрейм с колонками dimensions и metrics


Ответы (1 шт):

Автор решения: Сергей Кох

Так как это полуструктурированный JSON, поэтому берем соответствующий метод. Заодно 'dimensions' распаковываем, а 'metrics' добавляем.

df = pd.json_normalize(data, 'dimensions', ['metrics'])
          id                                               name metrics
0  240837577  Ключница / ключница карманная / ключница женск...       1
1  240836242  Кошелек женский / из натуральной кожи / портмо...       1
2  240837379  Ключница / ключница карманная / ключница женск...       0
3  240836803  Футляр для очков / чехол для солнцезащитных оч...       0
4  243718237  Сумка кросс боди кожаная / женская сумка из на...       0
→ Ссылка