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

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

DDD
Freigeben: 2024-12-01 09:27:11
Original
786 Leute haben es durchsucht

How to Efficiently Construct a Pandas DataFrame from a Nested Dictionary with a Hierarchical Index?

Erstellen eines Pandas-DataFrames aus verschachtelten Wörterbüchern

Bei der Arbeit mit verschachtelten Wörterbüchern kann es schwierig sein, die Daten in einen Pandas-DataFrame zu konvertieren eine Art und Weise, die mit der gewünschten Struktur übereinstimmt. Insbesondere das Extrahieren von Daten aus der tiefsten Ebene des Wörterbuchs als Reihe kann umständlich sein.

Angenommen, Sie haben ein Wörterbuch, das wie folgt strukturiert ist:

  • Ebene 1: UserId (Long Integer)
  • Ebene 2: Kategorie (String)
  • Ebene 3: Verschiedene Attribute (Floats, Ints usw.)

Das Ziel besteht darin, unter Verwendung der Daten aus der dritten Ebene des Wörterbuchs einen DataFrame mit einem hierarchischen Index zu erstellen.

Mithilfe von a MultiIndex

Ein Pandas MultiIndex ist eine praktische Möglichkeit, hierarchische Daten in einem DataFrame darzustellen. Um einen MultiIndex aus dem verschachtelten Wörterbuch zu erstellen, formen Sie die Schlüssel in Tupel um, die den Multi-Index-Werten entsprechen.

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

Dieser Ansatz erstellt einen DataFrame mit einem hierarchischen Index, wobei die erste Ebene die UserIds und enthält Die zweite Ebene enthält die Kategorien. Die Daten aus der dritten Ebene sind nun in Reihen organisiert, auf die sowohl über die Benutzer-ID als auch die Kategorie als Index zugegriffen werden kann.

Alternativer Ansatz mit Verkettung

Eine andere Möglichkeit, den DataFrame zu erstellen, ist durch Verketten von Komponentendatenrahmen.

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

Diese Methode iteriert über das Wörterbuch und erstellt für jeden einen Datenrahmen Kombination aus Benutzer-ID und Kategorie. Die resultierenden Datenrahmen werden dann vertikal verkettet und mithilfe von Schlüsseln als hierarchischem Index verbunden.

Das obige ist der detaillierte Inhalt vonWie kann man effizient einen Pandas-DataFrame aus einem verschachtelten Wörterbuch mit einem hierarchischen Index 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage