1
resposta

[Bug] ERRO

Ocorrerão outro erros como atualização do pandas e na linha "cotacoes = df.stack(level=1)". Fiz algumas alterações ,porem continua apresentando erro: " KeyError: "['Ativo'] not in index" "

import yfinance as yf

Definindo a carteira de ações

carteira_yf = ['ABEV3.SA', 'B3SA3.SA', 'ELET3.SA', 'GGBR4.SA', 'ITSA4.SA', 'PETR4.SA', 'RENT3.SA', 'SUZB3.SA', 'VALE3.SA', 'WEGE3.SA']

Carregando os dados da carteira

df = yf.download(carteira_yf, start="2022-08-01", end="2023-08-01")

Passando os ativos para o multindex do df

cotacoes = df.stack(level=1, future_stack=True)

Resetando os índices e renomenado a coluna dos ativos

cotacoes = cotacoes.reset_index().rename(columns={'level_1': 'Ativo'})

Organizando o df

cotacoes = cotacoes[["Date", "Open", "High", "Low", "Close", "Ativo"]]

del carteira_yf, df

-------------------------------------------------''---------------------------------------------------- Fiz algumas mudanças novamente e apresentou o erro: KeyError: "['Open', 'High', 'Low', 'Close', 'Ativo'] not in index"

import yfinance as yf

Definindo a carteira de ações

carteira_yf = ['ABEV3.SA', 'B3SA3.SA', 'ELET3.SA', 'GGBR4.SA', 'ITSA4.SA', 'PETR4.SA', 'RENT3.SA', 'SUZB3.SA', 'VALE3.SA', 'WEGE3.SA']

Carregando os dados da carteira

df = yf.download(carteira_yf, start="2022-08-01", end="2023-08-01")

Passando os ativos para o MultiIndex do df

cotacoes = df.stack(level=0, future_stack=True)

Resetando os índices e renomeando a coluna dos ativos

cotacoes = cotacoes.reset_index()

Renomeando o nome do nível do ativo se necessário

if 'level_1' in cotacoes.columns: cotacoes = cotacoes.rename(columns={'level_1': 'Ativo'})

Organizando o df

cotacoes = cotacoes[["Date", "Open", "High", "Low", "Close", "Ativo"]]

del carteira_yf, df

1 resposta

Olá Daniele, tudo bem?

Você mencionou erro com o Pandas, você poderia dar mais detalhes sobre esse erro? Qual mensagem de erro você recebeu?

Além disso, na transcrição da aula Extraindo as cotações dos ativos há uma nota informando que a mudança no código na linha correspondente ao reset do índex e renomeação da coluna level_1.

Troque:

cotacoes = cotacoes.reset_index().rename(columns={"level_1": "Ativo"})

Por

cotacoes = cotacoes.reset_index().rename(columns={"Ticker": "Ativo"})

Certifique de que tenha feito essa mudança no script.

Espero ter ajudado e fico à disposição.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado