Problema com Strings e Inteiros no DataFrame - Pandas

15/11/2022

0

Pessoal, se alguém puder me ajudar com essa dúvida, tentei fazer uma busca na internet para tentar resolver o problema porém não encontrei nada referente a isso.
Estou criando um DataFrame com a biblioteca Pandas com outras planilhas, onde ela já está funcionando corretamente, porém estou querendo estilizar a o DataFrame, afim de ficar mais compreensivel e bonito, mas estou com certas dificultadades, se alguém conseguir me ajudar referente a dúvida ficaria grato.
Meu DataFrame atualmente está com valores sendo Float e String e precisaria que os valores recebendo Float/int recebessem um "R$" ou "%" nos seus valores. Transformando a tabela inteira em números o .format funciona corretamente, porém quando faço a inclusão de Strings ele apresenta erro pois não consta numero dentro do valor.
Acredito que para resolver o problema seria necessário a criação de uma função e posteriormente a chamada da planilha junto a função, porém tentei de diversas maneiras aplicar o .format a função com condicional, porém não obtive sucesso, alguém poderia me ajudar com tal duvida?
OBS: A função na imagem está errada e fiz a criação apenas para mostrar como estou fazendo, testei de diversas maneiras e não obtive sucesso.
OBS: Já na outra imagem mostro que colocando a tabela inteira com Números as ações ocorrem normalmente.

#Valor que funciona quanto a tabela é apenas númerica.

# vendas_df = vendas_df.style.format({'Gasolina':'R$ {:,.2f}', 'Aumento Gasolina':'{:,.1f}%', 'Gasolina Aditivada':'R$ {:,.2f}', 'Aumento G. Aditivada':'{:,.1f}%', 'Etanol':'R$ {:,.2f}', 'Aumento Etanol':'{:,.1f}%',})

# Para arrumar basta deixar todos os valores como numero, até saber como fazer funcao


#Como definir .format para função?
def teste(linha):
if((linha['Gasolina Aditivada'] == "Não Informado") or (
linha["Aumento G. Aditivada"] == "Base") or (
linha["Gasolina Aditivada"] == "Base") ):
return ['text-align: center']
else:
return linha.style.format({'Gasolina':'R$ {:,.2f}', 'Aumento Gasolina':'{:,.1f}%', 'Gasolina Aditivada':'R$ {:,.2f}', 'Aumento G. Aditivada':'{:,.1f}%', 'Etanol':'R$ {:,.2f}', 'Aumento Etanol':'{:,.1f}%'})

# vendas_df.style.apply(axis=1, func=teste)

Como posso fazer para o format funcionar dentro da função? tento de diversas maneiras porém o retorno não ocorre, porém quando jogo: vendas_df = vendas_df.style.format({'Gasolina':'R$ {:,.2f}', 'Aumento Gasolina':'{:,.1f}%', 'Gasolina Aditivada':'R$ {:,.2f}', 'Aumento G. Aditivada':'{:,.1f}%', 'Etanol':'R$ {:,.2f}', 'Aumento Etanol':'{:,.1f}%',})
Diretamente e transformo minha tabela em inteiro as alterações ocorrem normalmente, porém queria trabalhar tanto com strings quanto com inteiros na minha tabela
Daniel Alcantara

Daniel Alcantara

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar