Как фильтровать строки Pandas DataFrame по дате


Часто вы можете захотеть отфильтровать строки pandas DataFrame по датам. К счастью, это довольно легко сделать, и в этом руководстве объясняются два способа сделать это в зависимости от структуры вашего DataFrame.

Пример 1: фильтрация по дате с использованием индекса

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'sales': [4, 11, 13, 9],
 'customers': [2, 6, 9, 7]},
 index = ['2020-01-15', '2020-01-18', '2020-01-22', '2020-01-24'])

#view DataFrame 
print(df)

 sales customers
2020-01-15 4 2
2020-01-18 11 6
2020-01-22 13 9
2020-01-24 9 7

Поскольку даты находятся в индексе DataFrame, мы можем просто использовать функцию .loc для фильтрации строк на основе диапазона дат:

#filter for rows where date is between Jan 15 and Jan 22
df.loc['2020-01-15':'2020-01-22']

 sales customers
2020-01-15 4 2
2020-01-18 11 6
2020-01-22 13 9

Обратите внимание, что когда мы фильтруем строки с помощью df.loc[start:end] , даты начала и окончания включаются в вывод.

Пример 2. Фильтрация по дате с использованием столбца

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'sales': [4, 11, 13, 9],
 'day': ['2020-01-15', '2020-01-18', '2020-01-22', '2020-01-24']})

#view DataFrame 
print(df)

 sales day
0 4 2020-01-15
1 11 2020-01-18
2 13 2020-01-22
3 9 2020-01-24

Поскольку даты находятся в одном из столбцов DataFrame, вместо этого мы можем использовать логические операторы для фильтрации строк на основе диапазона дат:

#filter for rows where date is after Jan 15 and before Jan 23 
df[(df['day'] > '2020-01-15') &(df['day'] < '2020-01-23')]

 sales day
1 11 2020-01-18
2 13 2020-01-22

Обратите внимание, что мы можем использовать аналогичный синтаксис для фильтрации строк на основе дат за пределами некоторого диапазона:

#filter for rows where date is before Jan 20 *or* after Jan 22 
df[(df['day'] < '2020-01-20') |(df['day'] > '2020-01-22')]


 sales day
0 4 2020-01-15
1 11 2020-01-18
3 9 2020-01-24

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

Как фильтровать кадр данных Pandas по нескольким условиям
Как преобразовать дату и время в дату в pandas
Как найти уникальные значения в нескольких столбцах в Pandas

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.