Olá, boa noite Rogério!
Não é possível efetuar uma query, dentro de outra query. O Python, não compreende este tipo de passagem muito bem, e acaba gerando um erro.
Entretanto, nem tudo esta perdido. É possível, efetuar este comparação que você quer por meios paralelos.
import pandas as pd
imoveis_sudeste = [
{'Tipo':'Casa','Número de quartos':6,'Estado':'MG','Area de lazer': True, 'Garagem': True,'Interesse':'Venda','Valor':230500.00},
{'Tipo':'Apartamento','Número de quartos':4,'Estado':'SP','Area de lazer': False, 'Garagem': False,'Interesse':'Aluguel','Valor':900.00},
{'Tipo':'Chácara','Número de quartos':12,'Estado':'MG','Area de lazer': True, 'Garagem': True,'Interesse':'Venda','Valor':400700.00},
{'Tipo':'Casa','Número de quartos':4,'Estado':'RJ','Area de lazer': False, 'Garagem': False,'Interesse':'Venda','Valor':140000.00},
]
imoveis_sul = [
{'Tipo':'Apartamento','Número de quartos':5,'Estado':'RS','Area de lazer': True, 'Garagem': True,'Interesse':'Aluguel','Valor':1400.00},
{'Tipo':'Apartamento','Número de quartos':4,'Estado':'PR','Area de lazer': False, 'Garagem': True,'Interesse':'Venda','Valor':190600.00},
{'Tipo':'Chácara','Número de quartos':12,'Estado':'SC','Area de lazer': True, 'Garagem': True,'Interesse':'Venda','Valor':400700.00},
{'Tipo':'Casa','Número de quartos':4,'Estado':'SC','Area de lazer': False, 'Garagem': False,'Interesse':'Aluguel','Valor':1580.00},
]
# Dois DataFrames
dataset_imoveis_sudeste = pd.DataFrame(imoveis_sudeste)
dataset_imoveis_sul = pd.DataFrame(imoveis_sul)
Executando a comparação que você repassou:
# Utilizando uma variavel para duas querys em dois DataFrames distintos
tipo = dataset_imoveis_sudeste.query('Tipo == "Casa"' and dataset_imoveis_sul.query('Tipo == "Casa"'))
tipo
Conforme apresentado, o Python informa que necessita de uma string a ser avaliada, e não um outro DataFrame, utilizando o metodo query.
Agora, vem alguns exemplos que podem ser aplicados para contornar isto:
A mais simples:
# Utilizando uma variável para cada query de DataFrame
tipo_sudeste = dataset_imoveis_sudeste.query('Tipo == "Casa"')
tipo_sul = dataset_imoveis_sul.query('Tipo == "Casa"')
# Utilizando o metodo merge para combinar ambos DataFrame
# parametros: nome do data frame ; combinar ambos sem perda
tipo_sudeste_sul = pd.merge(tipo_sudeste,tipo_sul, how='outer')
tipo_sudeste_sul
A gambiarra:
# Utilizando função para descompactar a lista
# e junta-las antes de fazer a query
def descompacta(lista_salvar,lista):
for item in lista:
lista_salvar.append(item)
return lista_salvar
tipo_sudeste_sul= list()
descompacta(tipo_sudeste_sul,imoveis_sudeste)
descompacta(tipo_sudeste_sul,imoveis_sul)
dataset_tipo_sudeste_sul = pd.DataFrame(tipo_sudeste_sul)
dataset_tipo_sudeste_sul.query('Tipo == "Casa"')
Então, agora fica ao seu critério. Pode utilizar um dos meios informados, ou inventar um que mais lhe auxilie em seu problema.
Bons estudos! Pratique. ">