Regiões diferentes seguem convenções de datas diferentes (AAAA-MM-DD, AAAA-DD-MM, DD / MM / AA, etc.). É difícil trabalhar com tais strings nos dados. Pandas to_datetime() função permite converter a data e hora no formato de cadeia para datetime64. Este tipo de dados ajuda a extrair recursos de data e hora que variam de 'ano' a 'microssegundos'.

Para filtrar linhas com base em datas, primeiro formate as datas no DataFrame para o tipo datetime64. Em seguida, use as funções DataFrame.loc [] e DataFrame.query [] do pacote Pandas para especificar uma condição de filtro. Como resultado, adquira o subconjunto de dados, ou seja, o DataFrame filtrado. Vamos ver alguns exemplos do mesmo.

Usaremos um DataFrame de amostra que consiste no número de postagens em um dia específico. Converta a data nos dados de amostra para o tipo datetime64 da seguinte maneira.

# Import Pandas package
import pandas as pd
  
# Create a sample dataframe
df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2],
                   'date' : ['2020-08-09', '2020-08-25', '2020-09-05', 
                            '2020-09-12', '2020-09-29', '2020-10-15', 
                            '2020-11-21', '2020-12-02', '2020-12-10', 
                            '2020-12-18']})
  
# Convert the date to datetime64
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
  
# Display dataframe
df

Exemplo 1: 

Filtre dados com base em datas usando a função DataFrame.loc [] , a função loc [] é usada para acessar um grupo de linhas e colunas de um DataFrame por meio de rótulos ou array booleano. Neste exemplo, a declaração condicional em loc [] retorna uma array booleana com valor True se a linha satisfizer a condição (a data está entre 1º e 15 de setembro) e valor False caso contrário. Em seguida, a função loc [] retorna apenas as linhas com valores True. 

# Import Pandas package
import pandas as pd
  
# Create a sample dataframe
df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2],
                   'date': ['2020-08-09', '2020-08-25', 
                            '2020-09-05', '2020-09-12', 
                            '2020-09-29', '2020-10-15',
                            '2020-11-21', '2020-12-02', 
                            '2020-12-10', '2020-12-18']})
  
# Convert the date to datetime64
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
  
# Filter data between two dates
filtered_df = df.loc[(df['date'] >= '2020-09-01')
                     & (df['date'] < '2020-09-15')]
# Display
filtered_df

Saída:

Exemplo 2:

Use DateTimeIndex (dt) para acessar atributos de data e hora separados, como ano, mês, dia, dia da semana, horas, minutos, segundos, microssegundos, etc. como uma condição na função loc [] da seguinte maneira. 

Nota: Os valores de data devem estar no formato datetime64.

# Import Pandas package
import pandas as pd
  
# Create a sample dataframe
df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2],
                   'date': ['2020-08-09', '2020-08-25',
                            '2020-09-05', '2020-09-12',
                            '2020-09-29', '2020-10-15',
                            '2020-11-21', '2020-12-02',
                            '2020-12-10', '2020-12-18']})
  
# Convert the date to datetime64
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
  
# Filter data between two dates
filtered_df = df.loc[(df['date'] >= '2020-09-01')
                     & (df['date'] < '2020-09-15')]
  
# Display
print("\nPosts in December:")
print(filtered_df)
  
# Filter data for specific weekday (tuesday)
filtered_df = df.loc[df['date'].dt.weekday == 2]
  
# Display
print("\nPosts on all Tuesdays:")
print(filtered_df)

Saída:

Exemplo 3: 

Filtre dados com base em datas usando a função DataFrame.query(). A função query() filtra um Pandas DataFrame e seleciona linhas especificando uma condição entre aspas. Conforme mostrado abaixo, a condição dentro da consulta() é selecionar os dados com datas no mês de agosto (intervalo de datas é especificado). As colunas do DataFrame são colocadas no namespace da consulta por padrão para que a coluna de data possa ser acessada sem indexação (simplesmente especifique o nome da coluna).

# Import Pandas package
import pandas as pd
  
# Create a sample dataframe
df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2],
                   'date': ['2020-08-09', '2020-08-25',
                            '2020-09-05', '2020-09-12',
                            '2020-09-29', '2020-10-15',
                            '2020-11-21', '2020-12-02',
                            '2020-12-10', '2020-12-18']})
  
# Convert the date to datetime64
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
  
# Filter data between two dates
filtered_df = df.query("date >= '2020-08-01' \
                       and date < '2020-09-01'")
  
# Display
filtered_df

Saída:

 Atenção geek! Fortaleça suas bases com o Python Programming Foundation Course e aprenda o básico.