La to_dict()
méthode définit les noms de colonne comme des clés de dictionnaire, vous devrez donc légèrement remodeler votre DataFrame. Définir la colonne 'ID' comme index, puis transposer le DataFrame est un moyen d'y parvenir.
to_dict()
accepte également un argument «orient» dont vous aurez besoin pour afficher une liste de valeurs pour chaque colonne. Sinon, un dictionnaire de la forme {index: value}
sera retourné pour chaque colonne.
Ces étapes peuvent être effectuées avec la ligne suivante:
>>> df.set_index('ID').T.to_dict('list')
{'p': [1, 3, 2], 'q': [4, 3, 2], 'r': [4, 0, 9]}
Dans le cas où un format de dictionnaire différent est nécessaire, voici des exemples des arguments d'orientation possibles. Considérez le DataFrame simple suivant:
>>> df = pd.DataFrame({'a': ['red', 'yellow', 'blue'], 'b': [0.5, 0.25, 0.125]})
>>> df
a b
0 red 0.500
1 yellow 0.250
2 blue 0.125
Ensuite, les options sont les suivantes.
dict - la valeur par défaut: les noms de colonne sont des clés, les valeurs sont des dictionnaires d'index: paires de données
>>> df.to_dict('dict')
{'a': {0: 'red', 1: 'yellow', 2: 'blue'},
'b': {0: 0.5, 1: 0.25, 2: 0.125}}
list - les clés sont des noms de colonnes, les valeurs sont des listes de données de colonnes
>>> df.to_dict('list')
{'a': ['red', 'yellow', 'blue'],
'b': [0.5, 0.25, 0.125]}
series - comme 'list', mais les valeurs sont Series
>>> df.to_dict('series')
{'a': 0 red
1 yellow
2 blue
Name: a, dtype: object,
'b': 0 0.500
1 0.250
2 0.125
Name: b, dtype: float64}
split - divise les colonnes / données / index sous forme de clés avec les valeurs correspondant aux noms de colonnes, les valeurs de données par ligne et les étiquettes d'index respectivement
>>> df.to_dict('split')
{'columns': ['a', 'b'],
'data': [['red', 0.5], ['yellow', 0.25], ['blue', 0.125]],
'index': [0, 1, 2]}
records - chaque ligne devient un dictionnaire où la clé est le nom de la colonne et la valeur les données de la cellule
>>> df.to_dict('records')
[{'a': 'red', 'b': 0.5},
{'a': 'yellow', 'b': 0.25},
{'a': 'blue', 'b': 0.125}]
index - comme 'records', mais un dictionnaire de dictionnaires avec des clés comme étiquettes d'index (plutôt qu'une liste)
>>> df.to_dict('index')
{0: {'a': 'red', 'b': 0.5},
1: {'a': 'yellow', 'b': 0.25},
2: {'a': 'blue', 'b': 0.125}}
Dataframe.to_dict()
?