Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Diferente modo de renomear a coluna do DataFrame?

Olá, estou com dúvida em como renomear o dataframe criado na aula de uma forma diferente.

Durante a aula, o professor chegou a renomear o dataframe criado dos alunos de Estatística Básica, gerando um DataFrame com representação semelhante a esta:

Alunos do curso de Estatística básica
id_aluno
310JULIANA
163LUCIANA
338DEBORA
249ANGELA
32SARA
62EUNICE
237ZILDA
230CARLOS

Eu gostaria de fazê-lo um pouco diferente, de forma que o texto ' Alunos do curso de Estatística básica' continuasse em um patamar superior e quase centralizado (como se fosse um título), enquanto na linha de baixo eu ainda tivesse o 'id_aluno', seguido de 'Nome'. Algo parecido com isso:

Alunos do curso de Estatística básica
Id alunoNome
310JULIANA
163LUCIANA
338DEBORA
249ANGELA
32SARA
62EUNICE
237ZILDA
230CARLOS

Tentei algumas formas mas não consegui chegar nesse modelo. O modelo mais próximo que obtive foi:

Alunos do curso de Estatística básica
Id alunoNome
310JULIANA
163LUCIANA
338DEBORA
249ANGELA
32SARA
62EUNICE
237ZILDA
230CARLOS

Onde o texto deixou de estar acima do 'Nome', como eu desejo. O código utilizado foi:

proxima_turma.columns.name = 'Alunos do curso de Estatística básica:'
proxima_turma.index.name = 'Id aluno'
proxima_turma.rename({'nome': 'Nomes:'}, inplace = True, axis = 1)

Vi que talvez conseguiria chegar na forma desejada utilizando de multi index, mas não consegui entender uma forma de usar e colocar meu dataframe desta maneira. Como eu poderia modelá-lo dessa forma?

2 respostas
solução!

Olá Lucas, tudo bem ? Espero que sim.

Se o objetivo for apenas uma questão estética recomendo utilizar apenas um print antes da exibir o Dataframe.

Código:

print('Alunos do curso de Estatística básica')
proxima_turma

Resultado:

Alunos do curso de Estatística básica

ID AlunoNome
0310JULIANA
1163LUCIANA
2338DEBORA
3249ANGELA
432SARA
562EUNICE
6237ZILDA
7230CARLOS

Agora caso não fique satisfeito com essa solução podemos utilizar o MultIndex como você mesmo disse.

Para isso primeiro vamos criar uma lista com um tupla composta do nome da coluna no primeiro nível e o nome da coluna no segundo nível. Eu utilizei um list comprehension para ter um resultado dinâmico, mas você criar a lista manualmente como está na linha comentada.

Código:

# mult_columns = [('Alunos do curso de Estatística básica', 'ID Aluno'), ('Alunos do curso de Estatística básica', 'Nome')]
mult_columns = [('Alunos do curso de Estatística básica', coluna) for coluna in proxima_turma.columns.to_list()]
mult_columns

Resultado:

[('Alunos do curso de Estatística básica', 'ID Aluno'),
 ('Alunos do curso de Estatística básica', 'Nome')]

Com a lista pronta, podemos criar o MultiIndex com o método from_tuples. E atribuir ele ao atributo columns do nosso DataFrame.

Código:

proxima_turma.columns = pd.MultiIndex.from_tuples(mult_columns)
proxima_turma

Resultado:

Print de um notebook, exibindo a célula de código descrita acima e o resultado, que é um DataFrame com multIndex. O primeiro nivel da coluna com o nome Alunos do curso de Estatística básica, no segundo nivel as colunas ID aluno e Nome

A segunda solução vai adicionar uma complexidade a mais no seu DataFrame que pode não se justificar se for apenas uma questão estética, já que agora vamos trabalhar com colunas multIndex.

Espero ter ajudado e qualquer duvida não hesite em perguntar.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muito obrigado Igor! Me ajudou muito e sanou completamente minhas dúvidas!