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

Query e interseção de grupos

Ao fazer o exercício proposto 4) Faça uma seleção e verifique quais alunos não tinham sido aprovados anteriormente, mas foram aprovados após a soma dos pontos extras. , o resolvi de duas formas:

1ª:

selecao = alunos.query('Aprovado == False and Aprovado_final == True')
selecao

2ª:

selecao = (alunos['Aprovado'] == False) & (alunos['Aprovado_final'] == True)
alunos[selecao]

Ambas desta forma funcionam. Mas minha dúvida é por que quando uso a função .query para chamar o resultado uso somente "selecao" e quando uso a interseção de grupos eu tenho que chamar "alunos[selecao]"?

1 resposta
solução!

Oi, Vinicius! Tudo certo?

Ótima pergunta! :)

No primeiro caso, estamos passando uma string que representa uma expressão booleana para o query(). O Pandas, por padrão, avalia essa expressão e retorna um novo DataFrame que contém apenas as linhas que cumprem a condição especificada. Sendo assim, podemos chamar selecao de forma direta para ver a tabela.

No segundo caso, estamos criando uma Series booleana (isto é, uma sequência de valores True/False). Cada valor True/False corresponde a uma linha do DataFrame. Ao chamar alunos[selecao], estamos dizendo ao Pandas para selecionar apenas as linhas do DataFrame alunos onde os dados da Series selecao é True.

Espero que tenha ficado mais claro, Vini! De forma resumida, é porque em um método já é retornado um DataFrame, ao passo que no segundo nós temos, a princípio, uma Series que precisa ser "transformada" em DataFrame.

Estarei por aqui caso outras dúvidas apareçam!

Um forte abraço.

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