Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desindexar a coluna data

Olá, ficou bem claro como trabalhar uma Series e fazer as devidas alterações. Porém, tentei fazer isso com um dataframe que estou puxando de uma API e aconteceu o seguinte. Ao tentar buscar as colunas do df, a coluna 'data' não veio.

data.columns
Index(['1. open', '2. high', '3. low', '4. close', '5. volume'], dtype='object')

Então ficou claro pra mim que a* 'data' * não estava entre as colunas e provavelmente seria o índice do df. Então, dei um

data.index
DatetimeIndex(['2021-07-02', '2021-07-01', '2021-06-30', '2021-06-29',
               '2021-06-28', '2021-06-25', '2021-06-24', '2021-06-23',
               '2021-06-22', '2021-06-21',
               ...
               '2005-01-14', '2005-01-13', '2005-01-12', '2005-01-11',
               '2005-01-10', '2005-01-07', '2005-01-06', '2005-01-05',
               '2005-01-04', '2005-01-03'],
              dtype='datetime64[ns]', name='date', length=4077, freq=None)

e parece que Datetime é mesmo o índice do dataframe e o nome é 'date', certo? Então entrei com o código:

data.set_index('1. open')

e o df ficou indexado visualmente pela coluna '1. open'. Só que a coluna de data sumiu e, ao rodar, de novo, 'data.index' recebi o mesmo resultado de quando a data estava indexando o df.

data.index
DatetimeIndex(['2021-07-02', '2021-07-01', '2021-06-30', '2021-06-29',
               '2021-06-28', '2021-06-25', '2021-06-24', '2021-06-23',
               '2021-06-22', '2021-06-21',
               ...
               '2005-01-14', '2005-01-13', '2005-01-12', '2005-01-11',
               '2005-01-10', '2005-01-07', '2005-01-06', '2005-01-05',
               '2005-01-04', '2005-01-03'],
              dtype='datetime64[ns]', name='date', length=4077, freq=None)

Não entendi por que a troca de indexação não funcionou e por que a coluna data sumiu. Alguém poderia me ajudar? Obrigado!

2 respostas
solução!

Oi Ubiratan! Como você está?

Vamos lá.

1 - A coluna data sumiu ao indexar pela coluna 1. open

Isso aconteceu, porque ao fazer o data.set_index('1. open') você está substituindo sua coluna com os índices, pelo conteúdo dessa coluna 1. open. E automaticamente sua coluna de índices é excluída.

2 - Ao rodar de novo data.index recebeu o mesmo resultado anterior

Ao fazer data.set_index('1. open') você conseguiu visualizar a alteração somente ao executar a célula, mas não salvou essa alteração diretamente no seu dataframe e, por isso, ao fazer data.index você obtém o mesmo resultado anterior. Para que essa alteração seja salva, você deve fazer data = data.set_index('1. open')

Mas, para realizar essa troca de índices sem perder a coluna de datas você pode fazer o seguinte:

# resetando o index
data = data.reset_index()
data
# setando a coluna "1. open" como index
data = data.set_index('1. open')
data

O reset_index irá tirar a coluna com datas do index e colocará uma coluna de índices com números de 0 à quantidade de linhas do seu dataframe. Assim, ao fazer o set_index, a coluna "1. open" irá substituir esses índices numéricos e você não perderá suas datas.

Espero que isso ajude. Qualquer dúvida estou por aqui :)

Bons estudos!

Oi, Millena! Estou ótimo e você? Caraca, Millena! Ajudou demais!!! Muitíssimo obrigado!