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.
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) # ano
Saí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_datas
Saí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_mes
Saí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).