1
resposta

Query "like" no Pandas com dados nulos ou nan

Olá pessoal,

Ainda estou no módulo 1 do curso mas já estou me aventurando a testar os conhecimentos com datasets diferentes.

Estou com um problema que não encontrei solução na internet e espero que alguém aqui possa me auxiliar.

Estou tentando fazer uma query usando o pandas no estilo "like" do SQL.

Aqui um trecho do código com o dataset que estou usando.

medicamentos.query("laboratorio.str.contains('PHARMA')")

Pelo que percebi na documentação do pandas, o código acima está "correto". Porém, quando vou executá-lo existem algumas linhas nulas ou nan e o código dá uns erros estranhos, que não achei solução na internet. Um deles é "TypeError: 'Series' objects are mutable, thus they cannot be hashed"

Fiz um teste com um DataFrame criado na mão, para ver o erro e acontece o mesmo.

teste = pd.DataFrame({'nome': ['Diego', 'Mateus', 'Giovani', 'Tiago', np.nan, 'Bias', 'Angela', np.nan, 'Beta']})
teste.query("nome.str.contains('Diego')")

Se alguém puder me dar uma luz para solucionar o problema, agradeço!!!

1 resposta

Olá Diego,

Realmente eu não conheço muito do query pra te ajudar com esse erro, mas como alternativa você pode utilizar o código abaixo para fazer essa filtragem:

import pandas as pd
import numpy as np

teste = pd.DataFrame({'nome': ['Diego', 'Mateus', 'Giovani', 'Tiago', np.nan, 'Bias', 'Angela', np.nan, 'Beta']})

# Opção de filtro sem utilizar o query
teste[teste['nome'].str.contains('Diego', na=False)]

Um detalhe importante é a opção na=False no contains, que vai considerar os valores que faltam como False e assim vai ignorar os NaN.

Esse código ajuda no seu cenário? Qualquer dúvida ou problema é só falar.