Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] apply map com .iloc não funciona?

Estava tentando realizar a seleção das colunas de forma mais funcional com a função iloc com o código abaixo:

dados.iloc[:,[10,12]].applymap(lambda x: x.replace('$','').replace(',','').strip())

porém, tive o seguinte erro:

AttributeError                            Traceback (most recent call last)
<ipython-input-41-13238bfcdf38> in <cell line: 1>()
----> 1 dados.iloc[:,[10,12]].applymap(lambda x: x.replace('$','').replace(',','').strip())

7 frames
<ipython-input-41-13238bfcdf38> in <lambda>(x)
----> 1 dados.iloc[:,[10,12]].applymap(lambda x: x.replace('$','').replace(',','').strip())

AttributeError: 'float' object has no attribute 'replace'

Não é possível utilizar a função lambda nesse tipo de seleção?

1 resposta
solução!

Oi Daniel, tudo bem?

O erro que você recebeu aponta que a função replace não é aplicável a objetos do tipo float. Uma forma de contornar essa situação, é garantindo que todos os valores sejam tratados como strings antes de aplicar a função replace. Você pode executar o código:

dados.iloc[:, [10, 12]] = dados.iloc[:, [10, 12]].applymap(lambda x: str(x).replace('$', '').replace(',', '').strip())

Depois de remover os caracteres indesejados, você pode converter os valores para floats:

dados['taxa_deposito'] = dados['taxa_deposito'].str.replace('$', '').str.replace(',', '').astype(np.float64)
dados['taxa_limpeza'] = dados['taxa_limpeza'].str.replace('$', '').str.replace(',', '').astype(np.float64)

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

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