Existe uma maneira de reordenar colunas no dataframe do pandas com base na minha preferência pessoal (ou seja, não em ordem alfabética ou numérica, mas mais como seguir certas convenções)?
Exemplo simples:
frame = pd.DataFrame({
'one thing':[1,2,3,4],
'second thing':[0.1,0.2,1,2],
'other thing':['a','e','i','o']})
produz isto:
one thing other thing second thing
0 1 a 0.1
1 2 e 0.2
2 3 i 1.0
3 4 o 2.0
Mas em vez disso, eu gostaria disso:
one thing second thing other thing
0 1 0.1 a
1 2 0.2 e
2 3 1.0 i
3 4 2.0 o
(Por favor, forneça uma solução genérica em vez de específica para este caso. Muito obrigado.)
Você pode usar isto:
fonte
pandas
.pandas
v0.23`).Aqui está uma solução que uso com frequência. Quando você tem um grande conjunto de dados com toneladas de colunas, definitivamente não quer reorganizar manualmente todas as colunas.
O que você pode e, provavelmente, deseja fazer é apenas ordenar as primeiras colunas que usa com frequência e deixar que todas as outras colunas sejam elas mesmas. Esta é uma abordagem comum em R.
df %>%select(one, two, three, everything())
Portanto, você pode primeiro digitar manualmente as colunas que deseja ordenar e posicionar antes de todas as outras colunas em uma lista
cols_to_order
.Em seguida, você constrói uma lista para novas colunas, combinando o restante das colunas:
Depois disso, você pode usar o
new_columns
como outras soluções sugeridas.fonte
Você também pode fazer algo como
df = df[['x', 'y', 'a', 'b']]
Além disso, você pode obter a lista de colunas com:
A saída produzirá algo assim:
O que é fácil de reorganizar manualmente.
fonte
Construa-o com uma lista em vez de um dicionário
fonte
Você também pode usar OrderedDict:
fonte
Adicione o parâmetro 'colunas':
fonte
Tente indexar (então você deseja uma solução genérica não apenas para isso, então a ordem do índice pode ser exatamente o que você deseja):
Agora:
É:
fonte
Acho que isso é o mais simples e funcional:
fonte