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

[Bug] Como transformar linhas de uma variável em coluna

Oi pessoal!

Preciso transformar esse dataframe em um novo dataframe que tenha os valores de DS_CONTA em colunas, o VL_CONTA em linhas e o ST_CONTA_FIXA e DT_REFER em colunas.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeTentei fazer desta forma:

df_dre_brf_pivot = df_dre_brf.pivot(index=None, columns='DS_CONTA', values=['VL_CONTA','DT_REFER','ST_CONTA_FIXA'])

Mas deu esse erro: ValueError: Index contains duplicate entries, cannot reshape

Se alguém conseguir me ajudar, eu agradeceria muito!

1 resposta
solução!

Olá, Mariana! Tudo bom? Espero que sim!

O DataFrame que você apresentou na imagem aparenta ser apenas um fragmento do DataFrame utilizado na operação abaixo.

O erro que o Pandas está gerando é que os valores presentes na coluna de índice ou do próprio parâmetro columns com algum registro estão duplicados. Então desde que não tenhamos esse conjunto repetição simultaneamente, podemos usar o pivot.

E como as suas linhas serão o VL_CONTA, é esse valor que utilizaremos no index.

df.pivot(index = 'VL_CONTA', columns='DS_CONTA', values=['DT_REFER','ST_CONTA_FIXA'])

Resultado esperado (formatação diferente da encontrada no Pandas):

VL_CONTA('DT_REFER', 'Custo de Bens')('DT_REFER', 'Despesas com Vendas')('DT_REFER', 'Despesas/Receitas Operacionais')('DT_REFER', 'Receita de Vendas')('DT_REFER', 'Resultado Bruto')('ST_CONTA_FIXA', 'Custo de Bens')('ST_CONTA_FIXA', 'Despesas com Vendas')('ST_CONTA_FIXA', 'Despesas/Receitas Operacionais')('ST_CONTA_FIXA', 'Receita de Vendas')('ST_CONTA_FIXA', 'Resultado Bruto')
-4.47492e+062011-03-31nannannannanSnannannannan
-1.02058e+06nannan2011-03-31nannannannanSnannan
-854954nan2011-03-31nannannannanSnannannan
1.54558e+06nannannannan2011-03-31nannannannanS
6.02049e+06nannannan2011-03-31nannannannanSnan

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!