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

Como mudar editar os nomes do dataframe

Como eu faria para organizar os nomes acima ? na aula o professor disse que para nós era uma tarefa facil, mas acabou não explicando

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Oi, acho que ele chegou a passar por cima só em alguma aula, mas o que você pode fazer é o seguinte. Se você quiser alteral todos os nome das colunas.

dados = pd.DataFrame({'A': [11, 21, 31],
                   'B': [12, 22, 32],
                   'C': [13, 23, 33]})
print(df)

#    A  B  C
#0  1  4   7
#1  2  5   8
#2  3  6   9
dados.columns = ['Coluna1', 'Coluna2', 'Coluna3'] # assim para todas as colunas'

print(dados)

#   Coluna1  Coluna2  Coluna3
#0         1       4      7
#1         2       5      8
#2         3       6      9

Agora se você quiser trocar somente algumas em especifico tem que fazer da seguinte forma

dados.rename(columns = {'Coluna1': 'Nome novo', 'Coluna3': 'CCC'}, inplace = True)

print(dados)
#  tipinho  Coluna2  CCC
#0     1        4      7
#1     2        5      8
#2     3        6      9

Espero ter ajudado :)

solução!

Oi, Lúcio! Tudo bom?

Para complementar mais a resposta do João Vitor, vou te explicar como funciona o método rename com o tipo de rotulação do seu código.

Primeiramente, o que temos nas suas colunas é uma rotulação hierárquica, funciona da mesma forma dos rótulos para as colunas, mas dessa vez temos mais níveis de rotulação. Essa forma de rotulação também é conhecida por Multiindex e é um assunto mais avançado do pandas, além disso, ele é bem bacana pois permite que possamos trabalhar com dados de forma mais sofisticada :).

Para essa explicação vou utilizar o DataFrame da 1° tabela df_html[0], e você pode aplicar o mesmo exemplo nos demais DataFrames.

Utilizando df_html[0].info() podemos ver melhor a distribuição dos rótulos: resultado obtido pela linha de execução do método info() em df.html[0]. A imagem possui uma caixa retangular sem preenchimento com contorno em cor azul escuro, que destaca as tuplas que referenciam as sete colunas do DataFrame df.html[0]. Cada tupla é composta por 2 elementos, sendo o primeiro, o rótulo de 1° nível hierárquico e o segundo, o rótulo de 2° nível hierárquico

Veja que para cada coluna existe o nome referente ao 1° e ao 2° nível hierárquico, todos organizados em tuplas.

Para a definição dos nomes de cada nível, criamos um dicionário especificando nas chaves os nomes das colunas que existem e seus respectivos valores serão os nomes que desejamos renomear. Como no exemplo:

# dicionário para o 1° nível de hierarquia
nomes0 = {'Date':'a',
          'Reserve balances required':'b',
          'Reserve balances maintained 4':'c'}
# dicionário para o 2° nível de hierarquia
nomes1 = {'Date':'0',
          'Reserve balance requirements 1':'1',
          'Top of penalty- free band 2':'2',
          'Bottom of penalty- free band 3':'3',
          'Total':'4',
          'Balances maintained to satisfy reserve balance requirements 5':'5',
          'Balances maintained that exceed the top of the penalty- free band 6':'6'}

Tendo os nomes definidos, podemos utilizar do método rename para renomear nossos rótulos. Primeiramente, para alterar os rótulos de 1° nível, vamos passar como argumento columns = nomes0 com ele, definimos os novos nomes das colunas utilizando o dicionário nomes0. Em seguida, definimos o nível do rótulo que iremos renomear, como será no 1° nível dos rótulos, utilizaremos o parâmetro level=0 e por fim, inplace=True para substituir os rótulos no DataFrame. No final teremos o seguinte código:

df_html[0].rename(columns = nomes0,level=0,inplace=True)
df_html[0].head(2)

A saída da última linha será:

abc
DateReserve balance requirements 1Top of penalty- free band 2Bottom of penalty- free band 3TotalBalances maintained to satisfy reserve balance requirements 5Balances maintained that exceed the top of the penalty- free band 6
0Month 7Month 7Month 7Month 7Month 7Month 7Month 7
1Aug. 201913463914811412116715208761475551373321

Para alterar os rótulos de 2° nível seguiremos a mesma estrutura utilizada no 1° nível com a diferença de que nos argumentos columns e level utilizaremos as referências do 2° nível de rótulos.

# renomeando o 1° nível:
df_html[0].rename(columns = nomes0,level=0,inplace=True)
# renomeando o 2° nível:
df_html[0].rename(columns = nomes1,level=1,inplace=True)
df_html[0].head(2)

Com isso, a saída da última linha será:

abc
0123456
0Month 7Month 7Month 7Month 7Month 7Month 7Month 7
1Aug. 201913463914811412116715208761475551373321

Se ficou interessado em conhecer mais sobre o método rename, aqui está a documentação

Eu espero ter te ajudado a entender melhor! Qualquer outra dúvida estarei disposta a sanar ;-)

Bons estudos ^u^

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