Olá Eduardo! Tudo jóia?
Quando você faz:
tipoCerto = dfNova['Tipo'] == tipo
Você está tentando acessar uma coluna "Tipo" que não existe na sua Series dfNova
. Essa coluna encontra-se nos seus dados originais (dfResidencial, no seu caso). Sendo assim, o correto seria fazer tipoCerto = dfResidencial['Tipo'] == tipo
. E o mesmo vale pro restante do código que se encontra dentro desse laço for
, portanto, seu código ficaria asssim:
dfNova = dfResidencial.groupby('Tipo')['Valor']
df_new = pd.DataFrame()
for tipo in dfNova.groups.keys():
tipoCerto = dfResidencial['Tipo'] == tipo
limiteCerto = (dfResidencial['Valor'] >= limite_inferior[tipo]) & (dfResidencial['Valor'] <= limite_superior[tipo])
selecao = tipoCerto & limiteCerto
dfNovaFim = dfResidencial[selecao]
df_new = pd.concat([df_new,dfNovaFim])
Espero que isso te ajude! Qualquer dúvida estamos a disposição :)
Bons estudos!