2
respostas

Erro em funcao

A função abaixo substitui um determinado termo no dataframe

def substitui(linha):
    if (Janeiro["DS_ANOTACAO"] == 'DEA AGENCIA AMERICANA'):
        return 0
    else:
        return Janeiro["DS_ANOTACAO"]

# Aplicação do substitui criado
Janeiro["DS_ANOTACAO"] = Janeiro.apply(substitui, axis=1)

Ao rodar, tenho esse erro: ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

2 respostas

Olá, Rogério! Tudo bom?

Te aconselho a substituir a função operando sobre todo o DataFrame para operar diretamente sobre uma coluna do DataFrame, porque não estamos avaliando o argumento linha proposto na construção da função.

Então poderíamos aplicar diretamente sobre a coluna:

def substitui(valor):
    if (valor == 'DEA AGENCIA AMERICANA'):
        return 0
    else:
        return valor

Janeiro["DS_ANOTACAO"] = Janeiro["DS_ANOTACAO"].apply(substitui)

E talvez seja interessante ou até mesmo necessário indicar que cada valor x da Series estará recebendo o valor da função:

Janeiro["DS_ANOTACAO"] = Janeiro["DS_ANOTACAO"].apply(lambda x: substitui(x))

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado, as duas formas funcionaram, aparentemente, sem nenhuma diferença. Por que eu deveria optar pela segunda, como vc sugeriu? Grato.