Pandas: como selecionar linhas do dataframe por carimbo de data/hora
Você pode usar a seguinte sintaxe básica para selecionar linhas entre dois carimbos de data/hora em um DataFrame do pandas:
df[(df[' tstamp '] > ' 2022-10-25 04:30:00 ') & (df[' tstamp '] < ' 2022-10-27 11:00:00 ')]
Esta sintaxe assume que tstamp já possui um tipo datetime.
Caso contrário, você pode usar a seguinte sintaxe para convertê-lo em uma coluna de data e hora:
df[' tstamp '] = pd. to_datetime (df[' tstamp '])
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: selecione linhas do Pandas DataFrame por carimbo de data/hora
Suponha que temos o seguinte DataFrame do pandas que contém informações sobre vendas em uma loja de varejo:
import pandas as pd #createDataFrame df = pd. DataFrame ({' tstamp ': ['2022-10-25 04:00:00', '2022-10-25 11:55:12', '2022-10-26 02:00:00', '2022-10-27 10:30:00', '2022-10-27 14:25:00', '2022-10-28 01:15:27'], ' sales ': [18, 22, 19, 14, 14, 11]}) #view DataFrame print (df) tstamp sales 0 2022-10-25 04:00:00 18 1 2022-10-25 11:55:12 22 2 2022-10-26 02:00:00 19 3 2022-10-27 10:30:00 14 4 2022-10-27 14:25:00 14 5 2022-10-28 01:15:27 11
Digamos que queremos selecionar apenas as linhas entre os dois carimbos de data/hora a seguir:
- 25/10/2022 04:30:00
- 27/10/2022 11:00:00
Podemos usar a seguinte sintaxe para fazer isso:
#convert timestamp column to datetime dtype df[' tstamp '] = pd. to_datetime (df[' tstamp ']) #select rows between two timestamps df[(df[' tstamp '] > ' 2022-10-25 04:30:00 ') & (df[' tstamp '] < ' 2022-10-27 11:00:00 ')] tstamp sales 1 2022-10-25 11:55:12 22 2 2022-10-26 02:00:00 19 3 2022-10-27 10:30:00 14
Observe que apenas as linhas entre os dois carimbos de data/hora especificados são selecionadas.
Observe também que você pode selecionar linhas por carimbo de data/hora usando apenas um valor de data.
Por exemplo, poderíamos usar o código a seguir para selecionar todas as linhas com um carimbo de data/hora maior que 27/10/2022:
#convert timestamp column to datetime dtype df[' tstamp '] = pd. to_datetime (df[' tstamp ']) #select rows with timestamp after 2022-10-27 df[df[' tstamp '] > ' 2022-10-27 '] tstamp sales 3 2022-10-27 10:30:00 14 4 2022-10-27 14:25:00 14 5 2022-10-28 01:15:27 11
Observe que apenas as linhas cujo valor na coluna tsamp é posterior a 2022-10-27 são selecionadas.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em pandas:
Como converter DateTime em data no Pandas
Como converter colunas para DateTime no Pandas
Como classificar um DataFrame do Pandas por data