Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich effizient einen Pandas-DataFrame aus einem verschachtelten Wörterbuch mit hierarchischen Daten erstellen?

Wie kann ich effizient einen Pandas-DataFrame aus einem verschachtelten Wörterbuch mit hierarchischen Daten erstellen?

Linda Hamilton
Freigeben: 2024-12-14 10:58:12
Original
542 Leute haben es durchsucht

How Can I Efficiently Create a Pandas DataFrame from a Nested Dictionary with Hierarchical Data?

Konstruieren von Pandas-DataFrames aus verschachtelten Wörterbuchelementen

Gegeben sei ein verschachteltes Wörterbuch mit einer Struktur mit einer Benutzer-ID als oberster Ebene und Kategorien als zweiter Ebene Ebene und verschiedene Attribute als dritte Ebene besteht das Ziel darin, einen Pandas-DataFrame mit einem hierarchischen Index zu erstellen. Jede Benutzer-ID sollte als Indexwert erscheinen, während Kategorie- und Attributwerte die Spaltennamen bilden.

Herkömmliche Versuche, einen DataFrame aus einem solchen Wörterbuch zu erstellen, können zu einer falschen Index- und Spaltenzuweisung führen. Um dieses Problem anzugehen, sollten Sie die folgenden Ansätze in Betracht ziehen:

1. Umgestaltung des Wörterbuchs:

Eine Lösung besteht darin, das Wörterbuch in ein Format umzugestalten, in dem Schlüssel Tupel sind, die den gewünschten MultiIndex darstellen. Dies ermöglicht die Verwendung von pd.DataFrame.from_dict mit orient='index':

user_dict = {
    12: {'Category 1': {'att_1': 1, 'att_2': 'whatever'},
         'Category 2': {'att_1': 23, 'att_2': 'another'}},
    15: {'Category 1': {'att_1': 10, 'att_2': 'foo'},
         'Category 2': {'att_1': 30, 'att_2': 'bar'}}
}

df = pd.DataFrame.from_dict({(i,j): user_dict[i][j] 
                           for i in user_dict.keys() 
                           for j in user_dict[i].keys()},
                       orient='index')
Nach dem Login kopieren

2. Datenrahmen verketten:

Alternativ kann man den Datenrahmen erstellen, indem man für jede Kategorie und jeden Benutzer einzelne Datenrahmen erstellt und diese dann verkettet:

user_ids = []
frames = []

for user_id, d in user_dict.iteritems():
    user_ids.append(user_id)
    frames.append(pd.DataFrame.from_dict(d, orient='index'))

df = pd.concat(frames, keys=user_ids)
Nach dem Login kopieren

Beide Ansätze erzeugen einen Datenrahmen mit dem gewünschten Hierarchischer Index und Spaltenstruktur:

               att_1     att_2
12 Category 1      1  whatever
   Category 2     23   another
15 Category 1     10       foo
   Category 2     30       bar
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich effizient einen Pandas-DataFrame aus einem verschachtelten Wörterbuch mit hierarchischen Daten erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage