Рассмотрим пример гаража с датчиком над каждым парковочным местом. Датчик записывает с нерегулярными временными интервалами метку времени конкретного номера автомобильного номера, если он припаркован в этом месте или нет.
timestamp license_id db_id parked
0 2019-05-30 14:30:00 1001 1 True
1 2019-05-30 15:35:00 1001 1 False
2 2019-05-30 12:30:00 1002 1 True
3 2019-07-31 14:30:00 1002 2 True
4 2019-05-30 14:30:00 1004 1 True
5 2019-07-30 14:30:00 1005 2 True
6 2019-07-30 19:30:00 1006 2 False
, где timestamp
- метка времени записи датчика, license_id
- это id номерного знака, db_id
- это идентификатор базы данных, в которую записываются данные, а `` parked "- логическое значение, где True указывает, что автомобиль находился в этом месте. Как только база данных заполнена, другая создается для записи новых данных, и в результате этого процесса некоторые наблюдения могут записываться неправильно.
Фрейм данных db_id
выглядит следующим образом:
db_id id created_ts stopped_ts
0 1 2018-08-03 22:43:07.392988 2019-06-03 22:46:50.279
1 2 2019-06-03 22:46:50.279 2020-01-08 01:02:16.079
Я хотел бы создать кадр данных ежедневных записей всех датчиков, чтобы узнать, сколько и сколько автомобилей находятся на стоянке каждый день.
Я думал о том, чтобы создать новый кадр данных с регулярным ежедневным индексом и где столбцы представляют `` license_id "и затем заполните его логическим значением. Однако есть несколько ситуаций, которые усложняют ситуацию, когда создается новая база данных, а старая останавливается. Я суммировал различные сценарии ios и приведенные ниже правила:
current_recording current_db next_recording next_db rule
parked 1 parked 1 Assume car was parked from current timestamp until next timestamp
parked 1 not_parked 1 Normal case
not_parked 1 parked 1 Normal case
not_parked 1 not_parked 1 Ignore next recording
parked 1 parked 2 Assume car was parked from current timestamp until stopped time of db_id = 1 OR next recording timestamp, whichever is smaller
parked 1 not_parked 2 Assume car was parked from current timestamp until stopped time of db_id = 1. Ignore next recording.
not_parked 1 parked 2 Normal case
not_parked 1 not_parked 2 Ignore next recording
Я не уверен, какой метод (groupby, reshape, melt, et c ...) будет лучшим для такого форварда. заполнение условиями.
Спасибо за помощь.