Bom dia queridos,
Ao tentar concatenar os DFs com merge a partir da coluna Ativo recebi a mensagem: The column label 'Ativo' is not unique.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Bom dia queridos,
Ao tentar concatenar os DFs com merge a partir da coluna Ativo recebi a mensagem: The column label 'Ativo' is not unique.
Olá Estudante, tudo bem com você?
O erro The column label 'Ativo' is not unique indica que há mais de uma coluna com o mesmo rótulo de Ativo. Porém, como não tenho acesso a seu código completo, peço que reinicie o ambiente de execução do Google Colab. Você pode reiniciar o ambiente de execução clicando na barra de ferramentas localizada na parte superior da tela e em "Ambiente de execução" selecionar a opção "Reiniciar o ambiente de execução".
Após isso, insira o código da aula a seguir, que está no momento do merge dos indicadores:
# Importando as bibliotecas
import fundamentus
import pandas as pd
# Definindo a carteira de ações
carteira_fund = ["ABEV3", "B3SA3", "ELET3", "GGBR4", "ITSA4",
"PETR4", "RENT3", "SUZB3", "VALE3", "WEGE3"]
# Criando um df com algumas infos da carteira
ind = fundamentus.get_papel(carteira_fund)[['Setor', 'Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado',
'Nro_Acoes', 'Patrim_Liq','Receita_Liquida_12m','Receita_Liquida_3m',
'Lucro_Liquido_12m', 'Lucro_Liquido_3m']]
# Passando o ticker para uma coluna
ind = ind.reset_index()
ind.rename(columns = {'index':'Ativo'}, inplace=True)
# Alterando colunas object para numeric
colunas = ['Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado', 'Nro_Acoes', 'Patrim_Liq',
'Receita_Liquida_12m', 'Receita_Liquida_3m', 'Lucro_Liquido_12m', 'Lucro_Liquido_3m']
ind[colunas] = ind[colunas].apply(pd.to_numeric, errors='coerce', axis=1)
# Criando um novo df com alguns indicadores da carteira
ind_2 = fundamentus.get_resultado_raw().reset_index()
ind_2 = ind_2.query("papel in @carteira_fund")
ind_2 = ind_2[['papel','P/L', 'Div.Yield','P/VP','ROE']].reset_index(drop=True)
ind_2.rename(columns={'papel': 'Ativo','Div.Yield':'DY'}, inplace= True)
# Concatenando os dfs em um só com as infos e indicadores
indicadores = pd.merge(ind, ind_2, on="Ativo")
# Criando uma coluna para LPA (Lucro por Ação) e VPA (Valor Patrimonial por ação)
# para calcular a fórmula de Graham Valor intrínseco de uma ação (VI = √22,5 x LPA x VPA)
indicadores["LPA"] = (indicadores["Lucro_Liquido_12m"] / indicadores ["Nro_Acoes"]).round(2)
indicadores["VPA"] = (indicadores["Patrim_Liq"] / indicadores ["Nro_Acoes"]).round(2)
indicadores
Posteriormente, tente outra vez a execução da célula e deverá aparecer o novo dataframe.
Espero ter ajudado. Em caso de dúvidas estou à disposição. Abraços e bons estudos!