Панды Найти строки в течение 24 часов после Серии дат - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть DataFrame данных временных рядов, а также серия объектов временных отметок в 2 часа дня в течение примерно 80 дней.Мои данные временного ряда относятся к 5 дням каждого дня в моей Серии с 9:30 до 16:00.Мне нужно получить серию правды о том, находится ли строка в пределах 24-часового периода, предшествующего меткам времени в серии.

Вот что у меня есть:

td = datetime.timedelta(days=-1)
df['fomc'] = df['time'].transform(lambda x: (x > dates_time + td).any() and (x < dates_time).any())

Я понимаю, чтоэто неверно, но есть ли способ в Пандах сделать это?

Вот пример пары строк

time                | prc
0   1994-09-26 13:38:49  46.00
1   1994-09-26 13:57:15  46.04
2   1994-09-26 14:05:34  46.02
3   1994-09-26 14:07:18  46.13

Тогда у меня есть Серия, которая выглядит так:

0   1994-09-27
1   1994-11-15
2   1994-12-20

Так должно быть в следующих сериях:

0   False
1   False
2   True
3   True

Поскольку последние две записи в DataFrame находятся внутри 24-часового периода, предшествующего первой записи в серии.

edit: пример ввода / вывода, исправления.

1 Ответ

0 голосов
/ 29 ноября 2018

Это будет решение O (m * n), но оно должно быть быстрее, чем метод панд, используя numpy broadcast

df.time=pd.to_datetime(df.time)
v=df.time.values
v1=(v-s.values[:,None])/np.timedelta64(1, 'h')

np.any((v1>-24)&(v1<0),0)
Out[424]: array([False, False,  True,  True]) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...