Problema com Strings e Inteiros no DataFrame - Pandas
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
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
Curtidas 0