Convertire Dataframe Pandas in dizionario
-
Pandas DataFrame al dizionario utilizzando la funzione
to_dict()
-
Pandas DataFrame al dizionario con valori come lista o
Series
- Pandas DataFrame all’lista dei dizionari
- Pandas Dataframe al dizionario per righe
-
Dataframe al dizionario con una colonna come
key
-
Pandas DataFrame al dizionario usando le funzioni
dict()
ezip()
Questo tutorial introdurrà come convertire un Pandas DataFrame in un dizionario con gli elementi della colonna indice come chiave e gli elementi corrispondenti in altre colonne come valore. Useremo il seguente DataFrame nell’articolo.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
print(df)
Produzione:
Name Age Course
0 Jay 16 BBA
1 Jack 19 BTech
2 Mark 18 BSc
Pandas DataFrame al dizionario utilizzando la funzione to_dict()
La funzione Pandas to_dict()
converte un DataFrame in un dizionario. I parametri determinano il formato del dizionario e il modo in cui vengono associate le coppie chiave-valore. Di seguito è mostrato un esempio elementare di conversione di un DataFrame in Dictionary utilizzando to_dict()
:
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d1 = df.to_dict()
print(d1)
Produzione:
{'Name': {0: 'Jay', 1: 'Jack', 2: 'Mark'}, 'Age': {0: 16, 1: 19, 2: 18}, 'Course': {0: 'BBA', 1: 'BTech', 2: 'BSc'}}
Come puoi vedere nell’output, i nomi delle colonne vengono convertiti in chiavi e ogni record come valore, con index come chiave.
Pandas DataFrame al dizionario con valori come lista o Series
Possiamo passare parametri come list
, records
, series
, index
, split
e dict
alla funzione to_dict()
per modificare il formato del dizionario finale. Ad esempio, quando passiamo lista
e series
come parametro, abbiamo i nomi delle colonne come chiavi, ma le coppie di valori vengono convertite rispettivamente in una lista e in una serie di righe. Il seguente esempio lo dimostrerà.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_list = df.to_dict("list")
print(d_list)
d_series = df.to_dict("series")
print(d_series)
Produzione:
{'Name': ['Jay', 'Jack', 'Mark'], 'Age': [16, 19, 18], 'Course': ['BBA', 'BTech', 'BSc']}
{'Name': 0 Jay
1 Jack
2 Mark
Name: Name, dtype: object, 'Age': 0 16
1 19
2 18
Name: Age, dtype: int64, 'Course': 0 BBA
1 BTech
2 BSc
Name: Course, dtype: object}
Pandas DataFrame all’lista dei dizionari
Possiamo anche fare in modo che ogni riga come dizionario separato passi records
alla funzione. Il risultato finale è una lista con ogni riga come un dizionario. Per esempio,
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_records = df.to_dict("records")
print(d_records)
Produzione:
[{'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}]
Pandas Dataframe al dizionario per righe
Ma per molti casi, potremmo non volere i nomi delle colonne come chiavi del dizionario. Per tali situazioni, possiamo passare index
per rendere l’indice DataFrame come chiavi. Il seguente frammento di codice lo mostrerà.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_index = df.to_dict("index")
print(d_index)
Produzione:
{0: {'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, 1: {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, 2: {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}}
Dataframe al dizionario con una colonna come key
Ma cosa succede se preferiamo utilizzare gli elementi di una colonna come chiavi e gli elementi di altre colonne come valori? È possibile semplicemente impostando la colonna richiesta come indice del DataFrame e assumendone la trasposizione utilizzando la funzione .T()
.
Esempio:
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_names = df.set_index("Name").T.to_dict("list")
print(d_names)
Produzione:
{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}
Pandas DataFrame al dizionario usando le funzioni dict()
e zip()
La funzione Python dict()
può anche convertire il Pandas DataFrame in un dizionario. Dovremmo anche usare la funzione zip()
con le singole colonne come argomenti per creare l’iteratore parallelo. Quindi la funzione zip()
restituirà tutti i valori in una riga in ogni iterazione.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d = dict([(i, [a, b]) for i, a, b in zip(df["Name"], df["Age"], df["Course"])])
print(d)
Produzione:
{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInArticolo correlato - Pandas DataFrame
- Come ottenere le intestazioni delle colonne DataFrame Pandas come lista
- Come cancellare la colonna DataFrame Pandas DataFrame
- Come convertire la colonna DataFrame in data e ora in pandas
- Converti un Float in un Integer in Pandas DataFrame
- Ordina Pandas DataFrame in base ai valori di una colonna
- Ottieni l'aggregato di Pandas Group-By e Sum