Часто вы можете захотеть отфильтровать строки 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