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

[Dúvida] Usando a func renome não é possível resolver o exercício?

data = [['ARY', 'M', 21], ['CATIA', 'F', 19] , ['CARLOS', 'M', 50], ['BETO','M', 29], ['BRUNA', 'F' , 31], ['ANA', 'F',42 ]] df = pd.DataFrame(data) df.rename(columns = {0 : 'NOME', 1 : 'SEXO', 2 : 'IDADE'})

É possivel resolver renomeando as colunas do DataFrame? Sempre que busco as opções de resposta para gerar a resposta ele da um erro no argumento by

3 respostas

Olá, Fernando tudo bem?

Tente criar o DataFrame assim, já definindo os nomes das colunas:

data = {'Nome': ['Ary', 'Cátia', 'Carlos', 'Beto', 'Bruna', 'Ana'],
        'Sexo': ['M', 'F', 'M', 'M', 'F', 'F'],
        'Idade': [21, 19, 50, 29, 31, 42]}

df_A = pd.DataFrame(data)

Depois disso você utilizar o sort_values e ordernar pelas colunas Sexoe Nome:

df_B = df_A.sort_values(by = ['Sexo', 'Nome'])

O resultado será o seguinte DataFrame:

indexNomeSexoIdade
5AnaF42
4BrunaF31
1CátiaF19
0AryM21
3BetoM29
2CarlosM50

Dessa forma vai dar certo :D

solução!

Boa Tarde, Valquiria!

Muito obrigado, simples e eficiente. Caso seja possivel so me esclarecer mais uma duvida ainda da forma que eu escrevi meu código, depois que dou um df.rename ele faz a alteração normal na tabela, mas como havia dito anteriormente quando faço a selecao by 'SEXO' , 'NOME' ele gera o erro na busca , mas se eu em vez do nome colocar o index da coluna no caso [0,1] ele me traz a resposta corretamente. Pergunta Isso se deve pelo fato de eu atribuir o nome na coluna depois, e, esta alteração estar somente na memória e quando faço a consulta ele busca essa informação na base criada e não na alterada posteriormente??

Fernando, td bem??

O seu código não deu certo, certamente pois não atribui o resultado da renomeação das colunas ao dataframe, portanto, não há alteração na estrutura original do DataFrame. Para funcionar o código teria que estar assim:

data = [['ARY', 'M', 21], ['CATIA', 'F', 19] , ['CARLOS', 'M', 50], ['BETO','M', 29], ['BRUNA', 'F' , 31], ['ANA', 'F',42 ]]
df = pd.DataFrame(data)
df = df.rename(columns = {0 : 'NOME', 1 : 'SEXO', 2 : 'IDADE'})
df = df.sort_values(by=['SEXO', 'NOME'])

Na terceira linha a renomeação foi armazenada na variável df e isso vai fazer toda diferença.

Bons estudos! :)