Extrair o ano e o mês de uma coluna datetime no Pandas é uma tarefa comum. Este artigo explora três métodos eficientes, comparando seus pontos fortes e fracos para ajudá-lo a escolher a melhor abordagem para suas necessidades.
Sumário
Usando o acessador .dt
O acessador .dt
fornece uma maneira simples e eficiente de extrair componentes de data e hora. É frequentemente o método preferido devido à sua legibilidade e concisão.
import pandas as pd
data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
print(df)
Este código terá como saída:
date year month
0 2024-03-15 2024 3
1 2023-11-20 2023 11
2 2024-05-10 2024 5
Utilizando o método strftime()
O método strftime()
oferece maior flexibilidade, permitindo que você personalize o formato de saída. Isso é particularmente útil quando você precisa de representações de string específicas do ano e do mês para relatórios ou outros fins.
import pandas as pd
data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)
df['year'] = df['date'].dt.strftime('%Y')
df['month'] = df['date'].dt.strftime('%m') # Use '%b' para nome abreviado do mês, '%B' para nome completo
print(df)
Isso produzirá:
date year month
0 2024-03-15 2024 03
1 2023-11-20 2023 11
2 2024-05-10 2024 05
Lembre-se de consultar a documentação strftime()
do Python para uma lista completa de códigos de formato.
Acesso Direto com DatetimeIndex
Se sua coluna ‘date’ já for um DatetimeIndex
, você pode acessar diretamente os atributos ano e mês. Embora menos comum, isso pode ser eficiente se seus dados já estiverem neste formato.
import pandas as pd
data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)
date_index = pd.DatetimeIndex(df['date'])
df['year'] = date_index.year
df['month'] = date_index.month
print(df)
Isso produz a mesma saída do primeiro exemplo. No entanto, este método geralmente é menos preferido, a menos que você já esteja trabalhando com um objeto DatetimeIndex
.
Conclusão: O acessador .dt
oferece a abordagem mais concisa e eficiente para a maioria dos cenários. strftime()
fornece maior controle de formatação, enquanto o acesso direto ao DatetimeIndex
é útil em situações específicas. Escolha o método que melhor se alinha às suas necessidades e estilo de codificação. Sempre verifique se sua coluna ‘date’ é do tipo datetime usando pd.to_datetime()
se necessário.