Tengo dos pandasmarcos de datos ay 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 ade cada columna con el nombre de cada columna b.
No es tan fácil como simplemente comparando la primera fila de ala primera fila de bcomo valores duplicados, por ejemplo tanto a4y a7tiene el valor 5por lo que no es posible hacer coincidir inmediatamente a cualquiera b2o 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
mergefuente
comprensión del diccionario
Utilice uno
tuplede 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.
idxmaxEsto limita con lo absurdo ... En realidad, no hagas esto.
fuente