Eu tenho dois pandas
quadros de dados a
e 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
e
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
Os dois quadros de dados contêm exatamente os mesmos dados, mas em uma ordem diferente e com nomes de colunas diferentes. Com base nos números nos dois quadros de dados, eu gostaria de poder corresponder cada nome de coluna a
a cada nome de coluna b
.
Não é tão fácil quanto simplesmente comparar a primeira linha de a
com a primeira linha de, b
pois existem valores duplicados, por exemplo, ambos a4
e a7
possuem o valor, de 5
modo que não é possível correspondê-los imediatamente a um b2
ou a outro b4
.
Qual é a melhor maneira de fazer isso?
python
python-3.x
pandas
OD1995
fonte
fonte
[*df1.index]
favor? Será grato a você, felicidades.sort_values(by=..)
pega uma lista como parâmetro, por isso estou desembalar o índice para uma lista aqui, você também pode fazerlist(df1.index)
em vez de[*df1.index]
:)Aqui está uma maneira de aproveitar o numpy
broadcasting
:Outra abordagem semelhante (por @piR):
fonte
Uma maneira de
merge
fonte
compreensões de dicionário
Use um
tuple
dos valores da coluna como chave hash em um dicionárioPara o caso de não termos uma representação perfeita, produzi apenas o dicionário para colunas em que há correspondência.
idxmax
Isso beira o absurdo ... Na verdade, não faça isso.
fonte