Tengo dos pandas
marcos de datos a
y 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
y
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
Los dos marcos de datos contienen exactamente los mismos datos, pero en un orden diferente y con diferentes nombres de columna. Según los números en los dos marcos de datos, me gustaría poder hacer coincidir el nombre a
de cada columna con el nombre de cada columna b
.
No es tan fácil como simplemente comparando la primera fila de a
la primera fila de b
como valores duplicados, por ejemplo tanto a4
y a7
tiene el valor 5
por lo que no es posible hacer coincidir inmediatamente a cualquiera b2
o b4
.
¿Cuál es la mejor manera de hacer esto?
python
python-3.x
pandas
OD1995
fuente
fuente
[*df1.index]
parte, por favor? Te lo agradeceré, saludos.sort_values(by=..)
toma una lista como parámetro, así que estoy desempacando el índice a una lista aquí, también puedes hacerlo enlist(df1.index)
lugar de[*df1.index]
:)Aquí hay una manera de aprovechar numpy
broadcasting
:Otro enfoque similar (por @piR):
fuente
Una forma de
merge
fuente
comprensión del diccionario
Utilice uno
tuple
de los valores de columna como la clave hashable en un diccionarioEn caso de que no tengamos una representación perfecta, solo he producido el diccionario para las columnas donde hay una coincidencia.
idxmax
Esto limita con lo absurdo ... En realidad, no hagas esto.
fuente