Fiquei confusa quanto ao uso do "~"
Nessa parte, a variável selecao está armazenando registros de apartamentos com condomínio nulos certo? e a variável imovéis ao contrário, ou seja, armazena apartamentos que tem valor nos condomínios.
#Elimina os imóveis do tipo Apartamento que não apresentam valor Condominio:
selecao = (imoveis['Tipo'] == 'Apartamento') & (imoveis['Condominio'].isnull())
imoveis = imoveis[~selecao]
imoveis
Então, por que nessa parte ele está substituindo os valores por zero na variável imoveis e não na variável selecao?
#Substitui os valores faltantes que restam nas variáveis Condominio e IPTU por zero:
imoveis = imoveis.fillna({'Condominio': 0, 'IPTU': 0})
imoveis