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

Invertendo a seleção (~) mas com o método pd.df.query()

Pessoinhas legais dessa comunidade, poderiam me ajudar a entender se consigo fazer o que o professor fez na aula, mas com o método .query()?

Na aula, o professor fez uma seleção de registros no Data Frame que contivessem as seguintes condições:

selecao = (dados['Tipo'] == 'Apartamento') & (dados['Condominio'].isnull())

Em seguida, atribuiu ao Data Frame dados, o inverso dessa seleção, utilizando o NOT:

dados = dados[~selecao]

No Data Frame que tinha 22571 registros, foram removidos 745 que atendiam ao select realizado.



Minha duvida é:

Se eu fizer a seleção utilizando a query abaixo, eu obtenho as mesmas 745 linhas

select = dados.query("Tipo == 'Apartamento' and Condominio.isnull()")

Mas, consigo inverter esse select e substituir o resultado no data frame? O resultado de selecao é uma serie e de select é um data frame e por isso não consigo um resultado usando a mesma lógica dados[~select]

Pesquisei sobre, mas não consegui encontrar uma resposta. É possível com o método query?

3 respostas
solução!

Olá, Rafael! Tudo bom?

É possível sim. Você pode alterar a condição e usar a sua negação. Ou seja, você pode construir uma condição com todos os dados que você não quer observar, e no final, informar a query para pegar todos os dados que atendem a essa condição negativa. E eu identifiquei duas maneiras para fazê-lo:

select = dados.query("not (Tipo == 'Apartamento' and Condominio.isnull())")
select
select = dados.query("~ (Tipo == 'Apartamento' and Condominio.isnull())")
select

Em ambos os casos, basta adicionar um operador de negação (not, ~) sobre toda a condição dentro da query :D

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Boa tarde, Marcus! Obrigado pelo retorno. Eu tinha tentado algo parecido, mas creio que deva ter deixado a negação dentro dos parêntesis com a condição.

Clássico erro de noob! ¯\ _ (ツ)_/¯ hahahaha

Testei aqui agora, conforme sua orientação, e cantou bonito!

Mais uma vez, obrigado!

Show, já dizia Voltaire, "Somos feitos de erros (...)". Mas com os erros, também os aprendizados.

Sucesso!