Ich habe zwei pandas
Datenrahmen a
und b
:
a1 a2 a3 a4 a5 a6 a7
1 3 4 5 3 4 5
0 2 0 3 0 2 1
2 5 6 5 2 1 2
und
b1 b2 b3 b4 b5 b6 b7
3 5 4 5 1 4 3
0 1 2 3 0 0 2
2 2 1 5 2 6 5
Die beiden Datenrahmen enthalten genau dieselben Daten, jedoch in unterschiedlicher Reihenfolge und mit unterschiedlichen Spaltennamen. Basierend auf den Zahlen in den beiden Datenrahmen möchte ich in der Lage sein, jeden Spaltennamen a
mit jedem Spaltennamen in abzugleichen b
.
Es ist nicht so einfach, einfach die erste Zeile von a
mit der ersten Zeile von zu vergleichen, b
da es doppelte Werte gibt, zum Beispiel beide a4
und a7
den Wert haben, 5
so dass es nicht möglich ist, sie sofort mit entweder b2
oder abzugleichen b4
.
Was ist der beste Weg, dies zu tun?
python
python-3.x
pandas
OD1995
quelle
quelle
[*df1.index]
Teil mehr erklären ? Wird dir dankbar sein, Prost.sort_values(by=..)
nimmt eine Liste als Parameter, alsolist(df1.index)
[*df1.index]
Hier ist eine Möglichkeit, Numpy zu nutzen
broadcasting
:Ein anderer ähnlicher Ansatz (von @piR):
quelle
Ein Weg von
merge
quelle
Wörterbuchverständnis
Verwenden Sie einen
tuple
der Spaltenwerte als Hash-Schlüssel in einem WörterbuchFür den Fall, dass wir keine perfekte Darstellung haben, habe ich nur das Wörterbuch für Spalten erstellt, in denen eine Übereinstimmung vorliegt.
idxmax
Das grenzt an das Absurde ... Tu das eigentlich nicht.
quelle