J'ai le DataFrame suivant:
article client1 article2 article3 1 tomate au lait de pomme 2 pommes de terre orange d'eau 3 chips de jus de mangue
dont je veux le traduire en liste de dictionnaires par ligne
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'}]
Réponses:
Éditer
Comme John Galt le mentionne dans sa réponse , vous devriez probablement utiliser à la place
df.to_dict('records')
. C'est plus rapide que la transposition manuelle.Réponse originale
Utilisez
df.T.to_dict().values()
, comme ci-dessous:la source
df.T.to_dict().values()
, je perds aussi l'ordre de triunicodecsv.DictReader
Utilisation
df.to_dict('records')
- donne la sortie sans avoir à transposer en externe.la source
i.e. is the nth entry in the resulting list always also the nth column?
nième colonne ou la nième ligne?En prolongement de la réponse de John Galt -
Pour le DataFrame suivant,
Si vous souhaitez obtenir une liste de dictionnaires comprenant les valeurs d'index, vous pouvez faire quelque chose comme,
Qui produit un dictionnaire de dictionnaires où les clés du dictionnaire parent sont des valeurs d'index. Dans ce cas particulier,
la source
Si vous souhaitez sélectionner une seule colonne, cela fonctionnera.
Ce qui suit ne fonctionnera PAS et produira une TypeError: unsupported type:. Je pense que c'est parce qu'il essaie de convertir une série en dict et non une trame de données en dict.
J'avais l'obligation de ne sélectionner qu'une colonne et de la convertir en une liste de dictionnaires avec le nom de la colonne comme clé et j'étais coincé là-dessus pendant un peu, donc je pensais que je partagerais.
la source