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 по дате