Oi, gtferronato! Tudo bom com você? Eu espero que sim!
Existem várias formas de fazer isso, mas como eu não tenho acesso ao seu banco de dados, fiz um com 8 datas aleatórias do ano de 2021. Então você pode usar esse código como base para o seu, tudo bem?
Bom, eu entendi que você está trabalhando com um DataFrame, correto? Então montei um DataFrame de nome df
no qual eu defini as datas e nomes aleatórios:
import pandas as pd
df = pd.DataFrame({'Nome': ['Ary', 'Cátia', 'Denis', 'Beto', 'Bruna', 'Dara', 'Carlos', 'Alice'],
'Data': ['2021-12-23','2021-12-20','2021-01-22','2021-12-20','2021-03-03','2021-12-12','2021-12-23','2021-11-15']})
df
Resultado de df
:
| Nome | Data |
---|
0 | Ary | 2021-12-23 |
1 | Cátia | 2021-12-20 |
2 | Denis | 2021-01-22 |
3 | Beto | 2021-12-20 |
4 | Bruna | 2021-03-03 |
5 | Dara | 2021-12-12 |
6 | Carlos | 2021-12-23 |
7 | Alice | 2021-11-15 |
Primeiro, precisamos tornar a coluna Data uma coluna com valores em formato datetime, pois atualmente ele está definido como string. Então, para realizar essa transformação, utilizamos o comando pd.to_datetime()
para que seja retornado uma Series de valores em formato datetime, do seguinte modo:
df.Data = pd.to_datetime(df.Data)
Depois definimos as datas limites para o mês de dezembro de 2021, ou seja, do dia 1° de dezembro de 2021 e dia 31 de dezembro de 2021:
data_inicial = '2021-12-1'
data_final = '2021-12-31'
Logo após preparei uma variável selecionadora que define como 'True'
quais linhas do nosso DataFrame tem datas no mês de dezembro de 2021 utilizando de comparadores lógicos:
selecionador = (df['Data'] >= data_inicial) & (df['Data'] <= data_final)
selecionador
Resultado:
| Data |
---|
0 | True |
1 | True |
2 | False |
3 | True |
4 | False |
5 | True |
6 | True |
7 | False |
Pela saída obtida do selecionador podemos ver que ele encontrou corretamente cada data no mês de dezembro.
Agora é possível selecionar todas as datas do DataFrame, para isso, utilizamos a variável selecionador
com o método .loc[]
obtendo a Series do DataFrame do seguinte modo:
dez_2021 = df.Data.loc[selecionador]
Para transformar a série selecionada em uma lista, utilizamos o método tolist()
do pandas:
dez_2021 = df.Data.loc[selecionador].tolist()
#Retorno:
[Timestamp('2021-12-23 00:00:00'),
Timestamp('2021-12-20 00:00:00'),
Timestamp('2021-12-20 00:00:00'),
Timestamp('2021-12-12 00:00:00'),
Timestamp('2021-12-23 00:00:00')]
No entanto, isso retorna os valores em formato datetime, caso você deseje que os valores estejam em string você pode utilizar o método dt.strftime('%Y-%m-%d')
do pandas:
dez_2021 = df.Data.loc[selecionador].dt.strftime('%Y-%m-%d').tolist()
#Retorno:
['2021-12-23', '2021-12-20', '2021-12-20', '2021-12-12', '2021-12-23']
Se essa sugestão não funcionar tão bem com seus dados, você pode me retornar aqui o seu código completo (incluindo seu DataFrame) que eu estarei a disposição para te ajudar melhor ;-)
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!