strptime удаляет 0 из месяца и не распознается% m - PullRequest
0 голосов
/ 25 мая 2020

Ниже приведен мой код, который я запускаю на фрейме данных

def get_day_limit(self):
    self.df['day_end'] = np.where(self.df.index == self.df.index.get_loc(dt.strptime(str(self.df.index.date),'%Y-%m-%d')+' '+'15:15:00'),1,0)

Формат даты и времени индекса следующий

2020-02-18 09:15:00

2020-02-18 09:30:00

2020-02-18 09:45:00

Когда время равно 15: 15:00 независимо от даты, я хочу, чтобы self.df['day_end'] было 1 иначе 0

, но получаю следующую ошибку: -

> ValueError: time data '[datetime.date(2020, 2, 18) datetime.date(2020,
> 2, 18)\n datetime.date(2020, 2, 18) ... datetime.date(2020, 5, 20)\n
> datetime.date(2020, 5, 20) datetime.date(2020, 5, 20)]' does not match
> format '%Y-%m-%d'

Когда я пробовал это отдельно, я заметил, что 0 удален из месяца datetime.date, из-за чего он не может прочитать месяц с переполнением стека поиска %m

i, и обнаружил, что, когда мы используем формат %Y-%m-%d с дефисом, он убирает ноль в начале. Здесь Python strftime - дата без начала 0? .

НО МОИ ДАННЫЕ БУДУТ ДОСТУПНЫ ТОЛЬКО С ДИФФОМ.

Я пытался использовать .date(), но ndarray не вызываемый объект

Ответы [ 2 ]

1 голос
/ 25 мая 2020

В вашем случае вы можете просто использовать time для извлечения времени и сравнения:

# NOT the common `from datetime import datetime`
import datetime

def get_day_limit(self):
    self.df['day_end'] = (self.df.index.time == datetime.time(15,15)).astype(int)

Или другим способом без дополнительного пакета:

def get_day_limit(self):
    time = self.df.index - self.df.index.normalize()
    self.def['day_end'] = (time==pd.to_timedelta('15:15:00')).astype(int)
0 голосов
/ 25 мая 2020

попробуйте это

def get_day_limit(df):
    if (df.index.hour==15) & (df.index.minute==15):
       df['day_end'] = 1
    else:
       df['day_end'] = 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...