Tenho um dataframe que tem um campo chamado fields
que é uma lista de dicts (todas as linhas têm o mesmo formato). Aqui está como o dataframe é estruturado:
formId fields
123 [{'number': 1, 'label': 'Last Name', 'value': 'Doe'}, {'number': 2, 'label': 'First Name', 'value': 'John'}]
Estou tentando descompactar a fields
coluna para que fique assim:
formId Last Name First Name
123 Doe John
O código que tenho atualmente é:
for i,r in df.iterrows():
for field in r['fields']:
df.at[i, field['label']] = field['value']
No entanto, isso não parece ser a maneira mais eficiente. Existe uma maneira melhor de fazer isso?
Você pode usar .apply e .concat para converter os dicts em séries. Finalmente .pivot para converter a coluna em cabeçalhos.
Dados:
Código:
Saída:
Pessoalmente, eu construiria um novo dataframe:
Impressões:
Solução:
Resultado usando entrada de exemplo do OP:
Também funciona para várias linhas. Para este exemplo de entrada:
Resultado: