Gostaria de saber como posso pegar apenas os 5 últimos valores de uma variável. por exemplo tenho a data:
21/11/2022
Quero amarzenar apenas 21/11 a uma variável.
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!
Gostaria de saber como posso pegar apenas os 5 últimos valores de uma variável. por exemplo tenho a data:
21/11/2022
Quero amarzenar apenas 21/11 a uma variável.
Olá, Gabrielly. Tudo bem?
Você pode fazer acessando o ano e o mês da data, mas você precisa que a coluna do seu DataFrame seja do tipo datetime.
Para isso, existem algumas opções. Vou mostrar uma delas.
Primeiramente, vamos criar um pequeno DataFrame como exemplo, que irei chamar de df_datas:
import pandas as pd
dados = {'Data': ['21/11/2022', '15/02/2022', '07/05/2022']}
df_datas = pd.DataFrame(dados)Vamos verificar o tipo de dados dos valores da coluna Data:
type(df_datas.Data[0])Saída:
str
Agora, precisamos converter o tipo de dados dos valores para datetime. Vamos fazer isso utilizando o método .to_datetime() do pandas. Em seguida, vamos ver o tipo de dados novamente:
df_datas['Data'] = pd.to_datetime(df_datas['Data'])
type(df_datas['Data'][0])Saída:
pandas._libs.tslibs.timestamps.Timestamp
Pronto, agora temos os dados com o tipo que precisamos. Com isso, podemos acessar somente os dias, os meses e os anos das datas:
print(df_datas.Data[0].day) # dia
print(df_datas.Data[0].month) # mês
print(df_datas.Data[0].year) # anoSaída:
21
11
2022
Para salvar somente o dia e o mês em uma nova coluna do DataFrame, podemos utilizar o método .strftime():
df_datas['dia_mes'] = df_datas['Data'].dt.strftime('%d/%m')
df_datasSaída:
| Data | dia_mes | |
|---|---|---|
| 0 | 2022-11-21 | 21/11 |
| 1 | 2022-02-15 | 15/02 |
| 2 | 2022-07-05 | 05/07 |
Se quiser pegar apenas um desses valores, basta selecionar o índice que deseja. Como exemplo, vou utilizar o índice 0, para a data 21/11:
dia_mes = df_datas['Data'].dt.strftime('%d/%m')[0]
dia_mesSaída:
'21/11'
Espero ter ajudado, Gabrielly. Se tiver mais alguma dúvida, estou à disposição. Bons estudos =)
Muito obrigada pela a ajuda!
Olá, a pergunta, foi essa: "Gostaria de saber como posso pegar apenas os 5 últimos valores de uma variável. por exemplo tenho a data":
21/11/2022
Quero amarzenar apenas 21/11 a uma variável.
Nesse caso, não poderia ser feito, simplesmente,
data[0:5]
Ao invés de toda a "solução complexa" apresentada? Afinal, da forma como o post foi feito, não foi especificado nenhum requisito para a solução (lembrando que data pode ser armazenada tanto como datetime quanto object(string).