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

função isin()

Boa tarde!

A função em ISIN() por default ela só traz números pares ou precisa do if i % 2 == 0 para trazer os numeros pares? Nesse calculo abaixo não entendi muito a forma que foi trazido os pares e as letras

selecao = df['N'].isin([i for i in range(11) if i % 2 == 0])
df = df[selecao]
df

Poderia me explicar com mais detalhe sobre cada parte do código e o que ele está trazendo?

5 respostas

Boa tarde Paulo, o código abaixo é chamado em python de list comprehension, ou seja, tu criou uma lista a partir de um laço for e uma expressão de condição. Este é o código que gera os números pares compreendidos entre 1 e 10.

[i for i in range(11) if i % 2 == 0]

É como se tu tivesse passado diretamente a lista [2, 4, 6, 8, 10] para o método isin(). Este método pesquisa se os dados do dataframe estão presentes na lista. É como se tu fizesse a seguinte pergunta ao usar o método: o dado do dataframe está na lista .

Espero ter ajudado!

solução!

Eu posso considerar que ele verificar se é True ou False, certo?

Obrigado eu entendi aqui já! Na verdade eu não estava considerando o Dataframe anterior! Ficou claro.

Olá, Paulo! Tudo bem com você?

Vi aqui que a dúvida já foi solucionada, mas resolvi deixar minha contribuição ao tópico.

O método do .isin() nos retorna um DataFrame de booleanos, ou seja de Trues e Falses, que nos diz se os valores passados para dentro do método estão no seu DataFrame ou não, conforme a documentação.

Quando essa você esse trecho de código:

[i for i in range(11) if i % 2 == 0]

Saída:

[0, 2, 4, 6, 8, 10]

Você está realizando um list comprehension que é uma maneira mais fácil de criar listas em python sem escrever toda a sintaxe de um laço for. Como resultado você obtém apenas os números pares de 0 a 10.

Quando você realiza o seguinte trecho de código:

selecao = df['N'].isin([i for i in range(11) if i % 2 == 0])
selecao

Saída:

N
ATrue
BFalse
CTrue
DFalse
ETrue
FFalse
GTrue
HFalse
ITrue
JFalse
KTrue

É retornado um DataFrame booleano as linhas que do seu DataFrame, que é o df, em que os valores ([0, 2, 4, 6, 8, 10]) passados para o método .isin(). Para comparar vamos olhar nosso DataFrame df:

N
A0
B1
C2
D3
E4
F5
G6
H7
I8
J9
K10

Percebe que as linhas onde possui os valores [0, 2, 4, 6, 8, 10] estão como True e as que não possuem esses valores estão como False no retorno do .isin()?

Quando fazemos:

df = df[selecao]
df

Saída:

N
A0
C2
E4
G6
I8
K10

Estamos selecionando as linhas em df correspondentes às linhas onde há True em selecao e atribuindo ao próprio df, substituindo o DataFrame original pelo DataFrame com a seleção de apenas os valores pares presentes na lista ([0, 2, 4, 6, 8, 10]).

Qualquer dúvida estou sempre à disposição.

:)

Muito boa a explicação. Já tinha entendido, mais fica para os demais caso tenham dúvidas