Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich einen Pandas-DataFrame aus einem verschachtelten Wörterbuch mit hierarchischen Indizes?

Wie erstelle ich einen Pandas-DataFrame aus einem verschachtelten Wörterbuch mit hierarchischen Indizes?

DDD
DDDOriginal
2024-12-02 03:30:13227Durchsuche

How to Create a Pandas DataFrame from a Nested Dictionary with Hierarchical Indexes?

Erstellen eines Pandas-DataFrames aus Elementen in verschachtelten Wörterbüchern mit hierarchischen Indizes

In diesem Szenario möchten Sie einen Pandas-DataFrame aus einem verschachtelten Wörterbuch erstellen, aus dem die Hierarchie besteht :

  • Ebene 1: Benutzer-ID
  • Ebene 2: Kategorie
  • Ebene 3: Verschiedene Attribute

Der gewünschte DataFrame sollte Benutzer-IDs als Index und Kategorien und Attribute als Spalten haben.

Nutzung von Pandas MultiIndex

Ein effizienter Ansatz nutzt den MultiIndex von Pandas, der die Erstellung einer mehrstufigen Indexstruktur ermöglicht. Um diese Methode anzuwenden:

  1. Formen Sie das Eingabewörterbuch um, um Tupel als Schlüssel zu verwenden und an den gewünschten MultiIndex-Werten auszurichten.
  2. Konstruieren Sie den DataFrame mit pd.DataFrame.from_dict und geben Sie orient= an 'index', um Daten an den definierten Tupelschlüsseln auszurichten.
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')

print(df)



               att_1     att_2
12 Category 1      1  whatever
   Category 2     23   another
15 Category 1     10       foo
   Category 2     30       bar

Methode via Verkettung

Alternativ können Sie den DataFrame inkrementell durch Verkettung erstellen:

  1. Extrahieren Sie die Benutzer-IDs und erstellen Sie eine leere Liste zum Speichern von Komponentendatenrahmen.
  2. Iterieren Sie durch die Wörterbuch, erstellt einen Datenrahmen für jeden Benutzer und fügt ihn der Liste hinzu.
  3. Verketten Sie die Komponente Datenrahmen mit pd.concat, Indizierung nach Benutzer-ID.
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)

print(df)


               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 erstelle ich einen Pandas-DataFrame aus einem verschachtelten Wörterbuch mit hierarchischen Indizes?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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