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

[Dúvida] Ativiade 3

Qual o motivo de não usar o & ao invés de | no Desafio ?

alunos_a_remover = alunos.query('Nome == "Alice" | Nome == "Carlos"').index

Qual o motivo de não ser necessário acessar a coluna do DataFrame dessa maneira, usando o ['Nome'] no Desafio Extra?

alunos_aprovados = alunos_aprovados['Nome'].replace(7, 8)

1 resposta
solução!

Porque nesse caso estamos lidando com uma operação lógica de OU (ou seja, ou).

O operador | é o OU lógico bit a bit, e é o correto para expressões entre séries booleanas (como ao filtrar DataFrames com múltiplas condições).

Já o & representa o E lógico (ou seja, "Nome é Alice e também é Carlos"), o que nunca será verdade — uma mesma linha não pode ter dois nomes ao mesmo tempo.

Dica prática:
No query(), usamos os símbolos:

& para "E"

| para "OU"

Ambos precisam que cada condição esteja entre parênteses fora do query(), mas dentro de query() a sintaxe aceita sem parênteses:

python
Copiar
Editar
df.query('cond1 | cond2') # correto
2. Por que no Desafio Extra não foi necessário acessar a coluna ['Nome'] diretamente?
python
Copiar
Editar
alunos_aprovados = alunos_aprovados['Nome'].replace(7, 8)
Resposta:
Na verdade, esse exemplo está acessando sim a coluna ['Nome'] diretamente!

O que pode estar gerando confusão é o seguinte: talvez você esperasse algo como alunos_aprovados.replace(7, 8), e não alunos_aprovados['Nome'].replace(...).

O código:

python
Copiar
Editar
alunos_aprovados['Nome'].replace(7, 8)
Está acessando apenas a coluna Nome do DataFrame e aplicando .replace() somente nela.

Resumo Final:
Situação Explicação
vs&noquery()
Uso de ['Nome'] No segundo exemplo, ['Nome'] está explicitamente presente. A função replace está sendo aplicada apenas nessa coluna específica.