Как отфильтровать дф по определенной дате? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть df данных. Мне нужно иметь возможность возвращать определенные строки данных в зависимости от дня недели.

Если это понедельник, мне нужно напечатать строки, которые содержат данные за последние 3 дня. Если это среда или пятница, мне нужно напечатать строки, которые содержат данные за последние два дня.

Объединение двух df для создания одного:

df_new = pd.concat([outcomes_df, specialists_df], ignore_index=True)

df_new['Published Date'] = pd.to_datetime(df_new['Published Date'])

Получение правильных дат на основе сегодняшней даты:

N=0
if datetime.today().weekday() == 0:
    N = 3
elif datetime.today().weekday() == 2 or datetime.today().weekday() == 4:
    N = 2
else:
    pass

mydate = datetime.now() - timedelta(days=N)
print(mydate)

Фильтрация по диапазону дат

df_new = df_new[(df_new['Published Date'] >= mydate) & (df_new['Published Date'] <= datetime.today())]

print(mydate) приводит к правильной дате

print(df_new) приводит к ошибке:

Пустой фрейм данных Столбцы: [col1, col2, col3, Дата публикации] Индекс: []

1 Ответ

0 голосов
/ 02 апреля 2019

Вам не нужно, если еще здесь, так как это также понадобится для цикла, здесь я использую np.select

import numpy as np
s=df_new['Published Date'].dt.weekday
d=np.select([s==0,s.isin([2,4])],[3,2],0)


df_new['mydate']=(pd.to_datetime('today')-pd.to_timedelta(d,unit='D'))

df_new = df_new[(df_new['Published Date'] >= df_new['mydate']) & (df_new['Published Date'] <= datetime.today())]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...