Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Porque esse outro método não funciona?

Dado a lista com os tipos residenciais

residencial = ['Quitinete',
 'Casa',
 'Apartamento',
 'Casa de Condomínio',
 'Casa de Vila']

O Rodrigo usa esse método para filtrar e criar um novo dataframe:

filtro_residencial = dados.Tipo.isin(residencial)
dados_residencial = dados[filtro_residencial]
dados_residencial.index = range(len(dados_residencial))

Mas porque usando o df.loc não funciona?

dados_residencial = dados.loc[dados.Tipo == residencial, :]

ValueError: Lengths must match to compare
1 resposta
solução!

Bom dia Paulo, tudo bem? Espero que sim!

Obrigado por enviar sua dúvida.

A função loc recebe no input os índices do seu DataFrame ou um array de Booleans, que deve possuir o número de linhas igual ao número de linhas do seu DataFrame.

Quando você faz dados.Tipo == residencial, você está comparando cada elemento do seu array dados.Tipo com cada elemento do array residencial, mas eles não tem o mesmo tamanho para serem comparados.

Como dados.Tipo não são os índices do seu DataFrame, você não vai conseguir usá-los diretamente no método loc, mas pode utilizar um conjunto de dados em que os índices sejam a coluna Tipo:

dados_indexados = pd.read_csv('dados/aluguel.csv', sep = ';',index_col="Tipo")
residencial = ['Quitinete','Casa','Apartamento','Casa de Condomínio','Casa de Vila']

Feito isso, você pode usar o loc normalmente, visto que os seus índices são os valores da coluna Tipo:

dados_residencial = dados.loc[residencial]
dados_residencial

Para saber mais sobre o funcionamento da função loc, sugiro pesquisar mais sobre a documentação. Vou deixar link da documentação e de um artigo aqui abaixo:

Artigo

Documentação

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!