Pandas Dataframe in Dictionary umwandeln

Manav Narula 26 Dezember 2020
  1. Pandas DataFrame zu Dictionary mit der Funktion to_dict()
  2. Pandas DataFrame zu Dictionary mit Werten als Liste oder Series
  3. Pandas DataFrame zu Liste von Dictionaries
  4. Pandas Dataframe in Dictionary by Rows
  5. Dataframe zu Dictionary mit einer Spalte als key
  6. Pandas DataFrame in Dictionary mit dict() und zip() Funktionen
Pandas Dataframe in Dictionary umwandeln

In diesem Tutorial wird gezeigt, wie man einen Pandas DataFrame in ein Dictionary konvertiert, wobei die Elemente der Indexspalte als Schlüssel und die entsprechenden Elemente der anderen Spalten als Wert dienen. Wir werden in dem Artikel den folgenden DataFrame verwenden.

import pandas as pd

df = pd.DataFrame(
    [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
    columns=["Name", "Age", "Course"],
)

print(df)

Ausgabe:

   Name  Age Course
0   Jay   16    BBA
1  Jack   19  BTech
2  Mark   18    BSc

Pandas DataFrame zu Dictionary mit der Funktion to_dict()

Pandas to_dict() Funktion konvertiert einen DataFrame in ein Dictionary. Die Parameter bestimmen das Format des Dictionaries und wie die Schlüssel-Wert-Paare zugeordnet werden. Ein elementares Beispiel für die Konvertierung eines DataFrame in ein Dictionary mit der Funktion to_dict() ist unten dargestellt:

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)

Ausgabe:

{'Name': {0: 'Jay', 1: 'Jack', 2: 'Mark'}, 'Age': {0: 16, 1: 19, 2: 18}, 'Course': {0: 'BBA', 1: 'BTech', 2: 'BSc'}}

Wie Sie in der Ausgabe sehen können, werden die Spaltennamen in Schlüssel und jeder Datensatz in den Wert konvertiert, wobei der Index als Schlüssel dient.

Pandas DataFrame zu Dictionary mit Werten als Liste oder Series

Wir können Parameter wie list, records, series, index, split und dict an die Funktion to_dict() übergeben, um das Format des endgültigen Dictionaries zu ändern. Wenn wir zum Beispiel list und series als Parameter übergeben, haben wir die Spaltennamen als Schlüssel, aber die Wertepaare werden in eine Liste bzw. eine Reihe von Zeilen konvertiert. Das folgende Beispiel soll dies demonstrieren.

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)

Ausgabe:

{'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 zu Liste von Dictionaries

Wir können auch jede Zeile als separates Dictionary haben, indem wir records an die Funktion übergeben. Das Endergebnis ist eine Liste mit jeder Zeile als Dictionary. Ein Beispiel,

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)

Ausgabe:

[{'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}]

Pandas Dataframe in Dictionary by Rows

In vielen Fällen möchten wir jedoch nicht die Spaltennamen als Schlüssel des Dictionaries verwenden. Für solche Situationen können wir index übergeben, um den Index des DataFrames als Schlüssel zu verwenden. Der folgende Codeschnipsel zeigt dies.

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)

Ausgabe:

{0: {'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, 1: {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, 2: {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}}

Dataframe zu Dictionary mit einer Spalte als key

Was aber, wenn wir lieber die Elemente einer Spalte als Schlüssel und die Elemente an anderen Spalten als Werte verwenden möchten? Das ist möglich, indem man einfach die gewünschte Spalte zum Index des DataFrame macht und dessen Transponierung mit der Funktion .T() vornimmt.

Beispiel:

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)

Ausgabe:

{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}

Pandas DataFrame in Dictionary mit dict() und zip() Funktionen

Die Python-Funktion dict() kann den Pandas-DataFrame auch in ein Dictionary konvertieren. Wir sollten auch die zip() Funktion mit den einzelnen Spalten als Argumente in ihr verwenden, um den parallelen Iterator zu erzeugen. Dann wird die Funktion zip() in jeder Iteration alle Werte in einer Zeile liefern.

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)

Ausgabe:

{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}
Manav Narula avatar Manav Narula avatar

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.

LinkedIn

Verwandter Artikel - Pandas DataFrame