Мои данные выглядят так:
>>> df = pd.DataFrame({'order_id': ['A', 'B'],
.. 'items': [[{'item': 1, 'color': 'blue' },
... {'item': 2, 'color': 'red' }],
... [{'item': 3, 'color': 'green'},
... {'item': 2, 'color': 'pink' }]]},
... columns= ['order_id', 'items'])
>>> df
order_id items
0 A [{'item': 1, 'color': 'blue'}, {'item': 2, 'color': 'red'}]
1 B [{'item': 3, 'color': 'green'}, {'item': 2, 'color': 'pink'}]
Столбец items
содержит подсказки, которые я хочу иметь в качестве столбцов кадра данных:
order_id item color
0 A 1 blue
1 A 2 red
2 B 3 green
3 B 2 pink
т.е. у каждого предмета диктата должен быть свой ряд.
То, что я до сих пор делал, это итерация строка за строкой и создание данных в новом фрейме данных:
df2 = pd.DataFrame(columns=['order_id', 'item', 'color'])
for row in df.iterrows():
for items in (row[1]['items']):
df2.loc[-1] =[row[1]['order_id'], items['item'], items['color'] ]
df2.index += 1
, который дает мне нужный мне результат:
>>> df2
order_id item color
3 A 1 blue
2 A 2 red
1 B 3 green
0 B 2 pink
Есть ли более эффективный способ сделать это? Может быть, на месте без создания другого объекта и дублирования всех существующих столбцов, потому что я имею дело с большими объемами данных?