Eu tenho o seguinte DataFrame:
cliente item1 item2 item3 1 tomate com leite e maçã 2 água de batata laranja 3 chips de suco de manga
que eu quero traduzir para lista de dicionários por linha
rows = [{'customer': 1, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'},
{'customer': 2, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'},
{'customer': 3, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}]
Respostas:
Editar
Como John Galt menciona em sua resposta , você provavelmente deveria usar
df.to_dict('records')
. É mais rápido do que transpor manualmente.Resposta original
Use
df.T.to_dict().values()
, como abaixo:fonte
df.T.to_dict().values()
, eu solto a ordem de classificação tambémunicodecsv.DictReader
Use
df.to_dict('records')
- fornece a saída sem precisar transpor para o exterior.fonte
i.e. is the nth entry in the resulting list always also the nth column?
enésima coluna ou a enésima linha?Como uma extensão da resposta de John Galt -
Para o seguinte DataFrame,
Se você deseja obter uma lista de dicionários, incluindo os valores do índice, pode fazer algo como,
Que gera um dicionário de dicionários em que as chaves do dicionário pai são valores de índice. Nesse caso em particular,
fonte
Se você estiver interessado em selecionar apenas uma coluna, isso funcionará.
O abaixo NÃO funcionará e produz um TypeError: tipo não suportado:. Eu acredito que isso ocorre porque ele está tentando converter uma série em um ditado e não um Data Frame em um ditado.
Eu tinha o requisito de selecionar apenas uma coluna e convertê-la em uma lista de dictos com o nome da coluna como a chave e fiquei presa a isso por um tempo, então achei que eu compartilharia.
fonte