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
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
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 :)
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:
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á:
a | b | c | |||||
---|---|---|---|---|---|---|---|
Date | Reserve balance requirements 1 | Top of penalty- free band 2 | Bottom of penalty- free band 3 | Total | Balances maintained to satisfy reserve balance requirements 5 | Balances maintained that exceed the top of the penalty- free band 6 | |
0 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 |
1 | Aug. 2019 | 134639 | 148114 | 121167 | 1520876 | 147555 | 1373321 |
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á:
a | b | c | |||||
---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
0 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 | Month 7 |
1 | Aug. 2019 | 134639 | 148114 | 121167 | 1520876 | 147555 | 1373321 |
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^