Pandas: как выбрать строки dataframe по метке времени


Вы можете использовать следующий базовый синтаксис для выбора строк между двумя метками времени в DataFrame pandas:

 df[(df[' tstamp '] > ' 2022-10-25 04:30:00 ') & (df[' tstamp '] < ' 2022-10-27 11:00:00 ')]

Этот синтаксис предполагает, что tstamp уже имеет тип datetime.

Если нет, вы можете использовать следующий синтаксис, чтобы преобразовать его в столбец datetime:

 df[' tstamp '] = pd. to_datetime (df[' tstamp '])

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: выберите строки Pandas DataFrame по метке времени

Предположим, у нас есть следующий DataFrame pandas, содержащий информацию о продажах в розничном магазине:

 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

Допустим, мы хотим выбрать только строки между следующими двумя метками времени:

  • 2022-10-25 04:30:00
  • 2022-10-27 11:00:00

Для этого мы можем использовать следующий синтаксис:

 #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

Обратите внимание, что выбираются только строки между двумя указанными нами временными метками.

Также обратите внимание, что вы можете выбирать строки по отметке времени, используя только значение даты.

Например, мы могли бы использовать следующий код, чтобы выбрать все строки с отметкой времени больше 27 октября 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

Обратите внимание, что выбираются только строки, значение которых в столбце tsamp позже 27 октября 2022 г.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:

Как преобразовать DateTime в дату в Pandas
Как преобразовать столбцы в DateTime в Pandas
Как отсортировать DataFrame Pandas по дате

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *