J'ai un DataFrame avec quatre colonnes. Je souhaite convertir ce DataFrame en dictionnaire python. Je veux que les éléments de la première colonne soient keys
et les éléments des autres colonnes de la même ligne soient values
.
Trame de données:
ID A B C
0 p 1 3 2
1 q 4 3 2
2 r 4 0 9
La sortie devrait être comme ceci:
Dictionnaire:
{'p': [1,3,2], 'q': [4,3,2], 'r': [4,0,9]}
python
pandas
dictionary
dataframe
Prince Bhatti
la source
la source
Dataframe.to_dict()
?Dataframe.to_dict()
feraA,B,C
les clés à la place dep,q,r
Réponses:
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:
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:
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
list - les clés sont des noms de colonnes, les valeurs sont des listes de données de colonnes
series - comme 'list', mais les valeurs sont Series
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
records - chaque ligne devient un dictionnaire où la clé est le nom de la colonne et la valeur les données de la cellule
index - comme 'records', mais un dictionnaire de dictionnaires avec des clés comme étiquettes d'index (plutôt qu'une liste)
la source
df.set_index('ID').T.to_dict('list')
Essayez d'utiliser
Zip
Production:
la source
Suivez ces étapes:
Supposons que votre dataframe soit la suivante:
1. Utilisez
set_index
pour définir lesID
colonnes comme index de trame de données.2. Utilisez le
orient=index
paramètre pour avoir l'index comme clé de dictionnaire.Les résultats seront les suivants:
3. Si vous devez avoir chaque exemple sous forme de liste, exécutez le code suivant. Déterminez l'ordre des colonnes
la source
Si cela ne vous dérange pas que les valeurs du dictionnaire soient des tuples, vous pouvez utiliser itertuples:
la source
devrait un dictionnaire comme:
être requis hors d'un dataframe comme:
Le moyen le plus simple serait de faire:
extrait de code ci-dessous:
la source
Pour mon utilisation (noms de nœuds avec des positions xy), j'ai trouvé la réponse de @ user4179775 à la plus utile / intuitive:
Addenda
Je suis revenu plus tard sur cette question, pour d'autres travaux, mais liés. Voici une approche qui reflète de plus près la [excellente] réponse acceptée.
Convertir la trame de données Pandas en [liste], {dict}, {dict of {dict}}, ...
Par réponse acceptée:
Dans mon cas, je voulais faire la même chose mais avec des colonnes sélectionnées du dataframe Pandas, donc j'avais besoin de découper les colonnes. Il existe deux approches.
(voir: Convertir les pandas en dictionnaire définissant les colonnes utilisées pour les valeurs clés )
ou
qui peut ensuite être utilisé pour créer un dictionnaire de dictionnaires
la source
DataFrame.to_dict()
convertit DataFrame en dictionnaire.Exemple
Consultez cette documentation pour plus de détails
la source