web-dev-qa-db-fra.com

Comment convertir une trame de données en dictionnaire dans pandas SANS index

J'ai un dataframe df comme suit:

| name  | coverage |
|-------|----------|
| Jason | 25.1     |

Je veux le convertir en dictionnaire. J'ai utilisé la commande suivante dans pandas:

dict=df.to_dict()

La sortie de dict m'a donné ce qui suit:

{'coverage': {0: 25.1}, 'name': {0: 'Jason'}} 

Je ne veux pas du 0 dans ma sortie. Je crois que cela est capturé à cause de l'index de colonne dans mon dataframe df. Que puis-je faire pour éliminer 0 dans ma sortie (je ne veux pas que l'index soit capturé.) sortie attendue:

{'coverage': 25.1, 'name': 'Jason'} 
9
Symphony

Lorsque je vois votre ensemble de données avec 2 colonnes, je vois une série et non un cadre de données.

Essayez ceci: d = df.set_index('name')['coverage'].to_dict() qui convertira votre trame de données en une série et la restituera.

Cependant, si votre intention est d'avoir plus de colonnes et non une clé commune, vous pouvez les stocker dans un tableau à la place en utilisant des "enregistrements". d = df.to_dict('r'). "

Code exécutable:

import pandas as pd

df = pd.DataFrame({
    'name': ['Jason'],
    'coverage': [25.1]
})

print(df.to_dict())
print(df.set_index('name')['coverage'].to_dict())
print(df.to_dict('r'))

Résultats:

{'name': {0: 'Jason'}, 'coverage': {0: 25.1}}
{'Jason': 25.1}
[{'name': 'Jason', 'coverage': 25.1}]

Et encore une chose, essayez d'éviter d'utiliser le nom de variable dict car il est réservé.

12
Anton vBR
dict1 = df.to_dict('records')

ou

dict2 = df.to_dict('list')

list: les clés sont des noms de colonnes, les valeurs sont des listes de données de colonnes

records: chaque ligne devient un dictionnaire où clé est le nom de la colonne et la valeur est les données de la cellule

7
asimo