Ich habe einen Datenrahmen mit zwei Spalten und beabsichtige, ihn in ein Python-Wörterbuch zu konvertieren. Die erste Spalte ist der Schlüssel und die zweite der Wert. Vielen Dank im Voraus.
Datenrahmen:
id value
0 0 10.2
1 1 5.7
2 2 7.4
python
dictionary
pandas
Perigäum
quelle
quelle
Antworten:
Siehe die Dokumente für
to_dict
. Sie können es so verwenden:Und wenn Sie nur eine Spalte haben, ist das Vermeiden des Spaltennamens auch eine Ebene im Diktat (tatsächlich verwenden Sie in diesem Fall die
Series.to_dict()
):quelle
>>> ptest = p.DataFrame([['a',1],['a',2],['b',3]], columns=['id', 'value']) >>> ptest.set_index('id')['value'].to_dict()
quelle
Wenn Sie auf einfache Weise Duplikate aufbewahren möchten, können Sie Folgendes verwenden
groupby
:quelle
Die Antworten von Joris in diesem Thread und von Punchagan im duplizierten Thread sind sehr elegant, liefern jedoch keine korrekten Ergebnisse, wenn die für die Schlüssel verwendete Spalte einen doppelten Wert enthält.
Beispielsweise:
Wenn Sie doppelte Einträge haben und diese nicht verlieren möchten, können Sie diesen hässlichen, aber funktionierenden Code verwenden:
quelle
mydict = defaultdict(list)\n for (key, val) in ptest[["id", "value"]].itertuples(index=False):\n mydict[key].append(val)
Einfachste Lösung:
Beispiel:
Wenn Sie mehrere Werte wie val1, val2, val3 usw. haben und diese als Listen verwenden möchten, verwenden Sie den folgenden Code:
quelle
records
bedeutet hierrecords
hier bedeuten‘records’ : list like [{column -> value}, … , {column -> value}]
Siehe pandas.pydata.org/pandas-docs/stable/reference/api/…In einigen Versionen funktioniert der folgende Code möglicherweise nicht
also mach es explizit
Beachten Sie, dass ich id_ verwendet habe, da das Wort id ein reserviertes Wort ist
quelle
Sie können "Diktatverständnis" verwenden.
quelle
Eine weitere (etwas kürzere) Lösung, um keine doppelten Einträge zu verlieren:
quelle
Sie benötigen eine Liste als Wörterbuchwert. Dieser Code wird den Trick machen.
quelle
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:
Die Verwendung von pandas to_dict () funktioniert auch:
(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:
quelle
Dies ist meine Sloution, eine grundlegende Schleife
quelle
Das ist meine Lösung:
quelle