1
resposta

Sobrescrever a variável selecao

#Selecione os imóveis classificados com tipos 'Casa', 'Casa de Condomínio' e 'Casa de Vila'.

selecao = (dados['Tipo'] == 'Casa' | dados['Tipo'] == 'Casa de Condomínio' | dados['Tipo'] == 'Casa de Vila')

n2 = dados[selecao].shape[0]

n2

Resulta neste erro:

        TypeError                                 Traceback (most recent call last)
    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in na_logical_op(x, y, op)
        301         #  (xint or xbool) and (yint or bool)
    --> 302         result = op(x, y)
        303     except TypeError:

    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\roperator.py in ror_(left, right)
         55 def ror_(left, right):
    ---> 56     return operator.or_(right, left)
         57 

    TypeError: unsupported operand type(s) for |: 'str' and 'str'

    During handling of the above exception, another exception occurred:

    TypeError                                 Traceback (most recent call last)
    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in na_logical_op(x, y, op)
        315             try:
    --> 316                 result = libops.scalar_binop(x, y, op)
        317             except (

    C:\ProgramData\Anaconda3\lib\site-packages\pandas\_libs\ops.pyx in pandas._libs.ops.scalar_binop()

    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\roperator.py in ror_(left, right)
         55 def ror_(left, right):
    ---> 56     return operator.or_(right, left)
         57 

    TypeError: unsupported operand type(s) for |: 'bool' and 'str'

    The above exception was the direct cause of the following exception:

    TypeError                                 Traceback (most recent call last)
    ~\AppData\Local\Temp/ipykernel_5492/2646244951.py in <module>
          2 
          3 
    ----> 4 selecao = dados['Tipo'] == 'Casa' | dados['Tipo'] == 'Casa de Condomínio' | dados['Tipo'] == 'Casa de Vila'
          5 
          6 n2 = dados[selecao].shape[0]

    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\common.py in new_method(self, other)
         67         other = item_from_zerodim(other)
         68 
    ---> 69         return method(self, other)
         70 
         71     return new_method

    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\arraylike.py in __ror__(self, other)
         72     @unpack_zerodim_and_defer("__ror__")
         73     def __ror__(self, other):
    ---> 74         return self._logical_method(other, roperator.ror_)
         75 
         76     @unpack_zerodim_and_defer("__xor__")

    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\series.py in _logical_method(self, other, op)
       5511         rvalues = extract_array(other, extract_numpy=True, extract_range=True)
       5512 
    -> 5513         res_values = ops.logical_op(lvalues, rvalues, op)
       5514         return self._construct_result(res_values, name=res_name)
       5515 

    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in logical_op(left, right, op)
        390         filler = fill_int if is_self_int_dtype and is_other_int_dtype else fill_bool
        391 
    --> 392         res_values = na_logical_op(lvalues, rvalues, op)
        393         # error: Cannot call function of unknown type
        394         res_values = filler(res_values)  # type: ignore[operator]

    C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in na_logical_op(x, y, op)
        323             ) as err:
        324                 typ = type(y).__name__
    --> 325                 raise TypeError(
        326                     f"Cannot perform '{op.__name__}' with a dtyped [{x.dtype}] array "
        327                     f"and scalar of type [{typ}]"

    TypeError: Cannot perform 'ror_' with a dtyped [object] array and scalar of type [bool]
1 resposta

Oi Matheus,

conforme comentado um pouco depois do minuto 5:40 do vídeo o correto seria o seguinte código:

selecao = (dados['Tipo'] == 'Casa') | (dados['Tipo'] == 'Casa de Condomínio') | (dados['Tipo'] == 'Casa de Vila')

Precisamos utilizar os parêntesis para cada parcela da nossa expressão.

Espero ter ajudado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software