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')
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)
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
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!