Я очень запутался из-за эффекта этого процесса фильтрации с использованием pandas DataFrames. Я пытаюсь получить строки, которые находятся между некоторыми датами, но мой результат DataFrame пуст. Я уверен, что данные за этот период есть.
df.info()
, возвращающее 'opentime' - это тип: `opendate 440383 non-null datetime64 [ns, UTC]
Фрагмент кода:
from datetime import timedelta
from datetime import datetime
current_date = pd.datetime.now()
t_delta_week = timedelta(days=7)
t_delta_year = timedelta(days=365)
#CurrentDate
date_start2020 = pd.Timestamp(current_date - t_delta_week, unit='ms')
date_end2020 = pd.Timestamp(current_date, unit='ms')
date_start2020 = date_start2020.tz_localize('utc')
date_end2020 = date_end2020.tz_localize('utc')
#LastYearDate
date_start2019 = pd.Timestamp(current_date - t_delta_year - t_delta_week, unit='ms')
date_end2019 = pd.Timestamp(current_date - t_delta_year, unit='ms')
date_start2019 = date_start2019.tz_localize('utc')
date_end2019 = date_end2019.tz_localize('utc')
df2020_2019['opendate'] = pd.to_datetime(df2020_2019['opendate'], unit='ms')
mask = (df2020_2019['opendate'] > date_start2020) & (df2020_2019['opendate'] <= date_end2020)
df_currYear = df2020_2019.loc[mask]
df_currYear
Возвращенный DataFrame пусто
Спасибо за помощь! :)
РЕДАКТИРОВАТЬ:
Возможно, это может помочь: столбец 'opendate' создается с использованием этого фрагмента кода:
import pandas as pd
fmt = '%Y-%m-%dT%H:%M:%S'
df2020_2019.dropna(subset=['opentime_TS'], inplace=True)
df2020_2019['opendate'] = pd.to_datetime(df2020_2019['opentime_TS'], utc=True, format=fmt, errors='ignore')
Кроме того, я добавил несколько head()
отпечатки образец данных . Я не могу предоставить запись df из-за конфиденциальности :)