У меня есть следующий фрейм данных.
df = {'location_id': [1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5],
'timestamp':['2020-05-26 06:00:00','2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00',
'2020-05-26 10:00:00','2020-05-26 11:00:00','2020-05-26 12:00:00', '2020-05-26 13:00:00',
'2020-05-26 06:00:00','2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00',
'2020-05-26 10:00:00','2020-05-26 11:00:00','2020-05-26 12:00:00', '2020-05-26 13:00:00',
'2020-05-26 06:00:00','2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00',
'2020-05-26 10:00:00','2020-05-26 11:00:00','2020-05-26 12:00:00', '2020-05-26 13:00:00',
'2020-05-26 06:00:00','2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00',
'2020-05-26 10:00:00','2020-05-26 11:00:00','2020-05-26 12:00:00', '2020-05-26 13:00:00',
'2020-05-26 06:00:00','2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00',
'2020-05-26 10:00:00','2020-05-26 11:00:00','2020-05-26 12:00:00', '2020-05-26 13:00:00']
}
dataframe = pd.DataFrame(df)
Каждый location_id имеет временную метку с 06:00:00 2020-05-06 до 13:00:00 26.05.2020. Я пытаюсь ограничить временную метку каждого location_id, чтобы все идентификаторы имели временную метку только между 07:00:00 и 10: 00: 00.
Окончательный фрейм данных должен быть следующим:
df = {'location_id': [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5],
'timestamp':['2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00', '2020-05-26 10:00:00',
'2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00', '2020-05-26 10:00:00',
'2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00', '2020-05-26 10:00:00',
'2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00', '2020-05-26 10:00:00',
'2020-05-26 07:00:00','2020-05-26 08:00:00', '2020-05-26 09:00:00', '2020-05-26 10:00:00']
}
dataframe = pd.DataFrame(df)
До сих пор я пробовал следующее:
dataframe[(dataframe['timestamp'] >= '2020-05-26 07:00:00') & (dataframe['timestamp'] <= '2020-05-26 10:00:00')]
В этом примере это работает, но при применении его к большому набору данных он не дает мне правильного ответа. Я попытался отсортировать значения на основе location_id и timestamp, а затем применил то же условие, но оно все равно не сработало. Всегда используется весь фрейм данных. Как этого добиться? Обратите внимание, что это был пример, взятый из очень большого набора данных (13000000 строк и 2 столбца, а реальная временная метка находится между 2020-05-26 00:00:00 до 2020-07-05 23:00:00 для каждого location_id) . Я был бы очень признателен, если бы кто-нибудь мог дать мне решение :)!