Olá, mais uma entre várias dúvidas a respeito do For dessa aula. Vamos lá
eh_tipo = dados['Tipo'] == tipo
eh_dentro_limite = (dados['Valor'] >= limite_inferior[tipo]) & (dados['Valor'] <= limite_superior[tipo])
selecao = eh_tipo & eh_dentro_limite
dados_selecao = dados[selecao]
dados_new = pd.concat([dados_new,dados_selecao])
A primeira linha ele faz a comparação para saber se cada um dos objetos dentro do DataFrame correndo ao tipo é o mesmo atualmente sendo visto no loop. Caso tipo == 'Apartamento'
e o ['Tipo'] == casa
o resultado é False e caso ['Tipo'] == 'Apartamento
entao o resultado é True, certo?
eh_dentro_limite = (dados['Valor'] >= limite_inferior[tipo]) & (dados['Valor'] <= limite_superior[tipo])
Pois bem, na segunda linha, ele compara todos os objetos dentro do Dataframe dados para saber se o valor esta dentro do limite, porém aqui começam meus problemas. Essa comparação ira funcionar para todos os objetos, certo? Não apenas os apartamentos, pois dados não está especificando o tipo, apenas está dizendo para usar a coluna valor para comparação. Caso tenha um dataframe, onde o valor da casa esteja dentro dos limites do apartamento, essa comparação retornara True
selecao = eh_tipo & eh_dentro_limite
Na terceira linha uma nova comparação é feita, caso o eh_tipo seja True, e o eh_dentro_limite, também seja true, selecao será true, qualquer outro resultado, ele será false, certo?
Pois bem, agora que realmente as coisas param de fazer sentido pra mim Na quarta linha
`dados_selecao = dados[selecao]`
a informacao de selecao é apenas true ou false, ou seja
`dados_selecao = dados[true]`
como o dados sabe oque retornar? Se a unica informacao que passei foi true ou false? Aqui nao foi passado nenhum indice ou coluna, apenas um valor boleano, em um dataFrame de valores nao booleanos.