Ich habe diese Frage gefunden, als ich versucht habe, aus drei Spalten eines Pandas-Datenrahmens ein Wörterbuch zu erstellen. In meinem Fall hat der Datenrahmen die Spalten A, B und C (sagen wir, A und B sind die geografischen Koordinaten von Längen- und Breitengrad und C die Länderregion / Bundesland / usw., was mehr oder weniger der Fall ist).
Ich wollte ein Wörterbuch mit jedem Paar von A, B-Werten (Wörterbuchschlüssel), das mit dem Wert von C (Wörterbuchwert) in der entsprechenden Zeile übereinstimmt (jedes Paar von A, B-Werten ist aufgrund der vorherigen Filterung garantiert eindeutig, aber es ist möglich, in diesem Zusammenhang den gleichen Wert von C für verschiedene Paare von A-, B-Werten zu haben), also habe ich:
mydict = dict(zip(zip(df['A'],df['B']), df['C']))
Die Verwendung von pandas to_dict () funktioniert auch:
mydict = df.set_index(['A','B']).to_dict(orient='dict')['C']
(Keine der Spalten A oder B wurde als Index verwendet, bevor die Zeile ausgeführt wurde, in der das Wörterbuch erstellt wurde.)
Beide Ansätze sind schnell (weniger als eine Sekunde auf einem Datenrahmen mit 85.000 Zeilen, 5 Jahre alter schneller Dual-Core-Laptop).
Die Gründe, warum ich dies poste:
- für diejenigen, die diese Art von Lösung benötigen
- Wenn jemand eine Lösung kennt, die schneller ausgeführt werden kann (z. B. für Millionen von Zeilen), würde ich mich über eine Antwort freuen.