1
resposta

[Dúvida] Como trocar o nome de segmento_cliente e modo_envio?

Olá! Gostaria de trocar o nome das colunas segmento_cliente e modo_envio

dados_cliente = dados.pivot_table(index = 'segmento_cliente', columns = 'modo_envio', values = 'vendas', aggfunc = 'sum')
dados_cliente['Total'] = dados_cliente.sum(axis=1)
dados_cliente.loc['Total'] = dados_cliente.sum()

Eu coloquei o seguinte código usando o rename, mas, por algum motivo, não funcionou.

dados_cliente.rename(columns={'segmento_cliente': 'Segmento cliente', 'modo_envio': 'Modo envio'}, inplace=True)
s_compra_cliente = dados_cliente.style.format('{:,.2f}')
tabela = {
    'selector': 'td,th:not(.index_name)',
    'props': 'font-weight: bold; font-family: Verdana; text-align: center; background-color: white'
}

index = {
    'selector': '.index_name',
    'props': 'font-weight: normal; text-align: rigth; font-style: italic; color: #696969'
}

s_compra_cliente.set_table_styles([tabela,index])
1 resposta

O problema ocorre porque o método pivot_table transforma os valores de segmento_cliente em índices e modo_envio em colunas. No seu rename, você está tentando renomear colunas que, na verdade, são o índice da tabela.

Correção:

  1. Renomear o índice: Use rename_axis para alterar o nome do índice.
  2. Renomear as colunas: O rename funciona normalmente para as colunas geradas pelo modo_envio.

Código corrigido:

# Pivot table
dados_cliente = dados.pivot_table(index='segmento_cliente', columns='modo_envio', values='vendas', aggfunc='sum')

# Soma total
dados_cliente['Total'] = dados_cliente.sum(axis=1)
dados_cliente.loc['Total'] = dados_cliente.sum()

# Renomear índice e colunas
dados_cliente.rename_axis('Segmento cliente', inplace=True)  # Renomeia o índice
dados_cliente.rename(columns={'First Class': 'Classe A', 'Second Class': 'Classe B', 'Standard Class': 'Classe C'}, inplace=True)  # Exemplo de renomeação de colunas

# Estilização
s_compra_cliente = dados_cliente.style.format('{:,.2f}')

tabela = {
    'selector': 'td,th:not(.index_name)',
    'props': 'font-weight: bold; font-family: Verdana; text-align: center; background-color: white'
}

index = {
    'selector': '.index_name',
    'props': 'font-weight: normal; text-align: right; font-style: italic; color: #696969'
}

s_compra_cliente.set_table_styles([tabela, index])

Principais mudanças:

  • Usei rename_axis('Segmento cliente') para o índice.
  • Corrigi o alinhamento do texto em text-align: right (estava com erro de digitação: rigth).
  • O rename para colunas funciona apenas se você estiver alterando os nomes reais presentes após o pivot.

Se quiser renomear para algo específico, avise!