J'ai deux pandas
trames de données a
et 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
et
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
Les deux trames de données contiennent exactement les mêmes données, mais dans un ordre différent et avec des noms de colonne différents. Sur la base des nombres dans les deux trames de données, je voudrais pouvoir faire correspondre chaque nom de colonne dedans a
à chaque nom de colonne dedans b
.
Ce n'est pas aussi simple que de comparer simplement la première ligne de a
avec la première ligne b
car il y a des valeurs dupliquées, par exemple les deux a4
et a7
ont la valeur 5
il n'est donc pas possible de les faire correspondre immédiatement à l'un b2
ou à l'autre b4
.
Quelle est la meilleure façon de procéder?
python
python-3.x
pandas
OD1995
la source
la source
[*df1.index]
partie s'il vous plaît? Je vous en serai reconnaissant.sort_values(by=..)
prend une liste en tant que paramètre, donc je décompresse l'index dans une liste ici, vous pouvez également le faire à lalist(df1.index)
place de[*df1.index]
:)Voici une façon d'exploiter numpy
broadcasting
:Une autre approche similaire (par @piR):
la source
Une façon de
merge
la source
compréhension de dictionnaire
Utilisez l'une
tuple
des valeurs de colonne comme clé de hachage dans un dictionnaireJuste au cas où nous n'aurions pas une représentation parfaite, je n'ai produit le dictionnaire que pour les colonnes où il y a une correspondance.
idxmax
Cela frise l'absurde ... Ne faites pas ça.
la source