ТАК У меня есть кадр данных pandas, который содержит 2 значения водопользования с разрешением 1 секунда. Значения являются «hotIn» и «hotOut». HotIn может записывать до десятой доли галлона с разрешением в одну секунду, в то время как hotOut записывает целые импульсы, представляющие галлон, то есть, когда происходит импульс, один галлон прошел через измеритель. Импульсы происходят примерно каждые 14-15 секунд.
Данные выглядят примерно так:
Index hotIn(gpm) hotOut(pulse=1gal)
2019-03-23T00:00:00 4 0
2019-03-23T00:00:01 5 0
2019-03-23T00:00:02 4 0
2019-03-23T00:00:03 4 0
2019-03-23T00:00:04 3 0
2019-03-23T00:00:05 4 1
2019-03-23T00:00:06 4 0
2019-03-23T00:00:07 5 0
2019-03-23T00:00:08 3 0
2019-03-23T00:00:09 3 0
2019-03-23T00:00:10 4 0
2019-03-23T00:00:11 4 0
2019-03-23T00:00:12 5 0
2019-03-23T00:00:13 5 1
Я пытаюсь сделать повторную выборку или переиндексировать фрейм данных на основевозникновение импульсов и суммирование hotIn между новыми отметками времени.
Например, суммируйте hotIn между 00:00:00 - 00:00:05 и 00:00:06 - 00:00:13.
Результаты в идеале должны выглядеть следующим образом:
Index hotIn sum(gpm) hotOut(pulse=1gal)
2019-03-23T00:00:05 24 1
2019-03-23T00:00:13 32 1
Я исследовал использование двухэтапного цикла for-elif, который просто проверяет, работает ли hotOut == 1, но работает ли он мучительно медленнона больших наборах данных. Я уверен, что временные метки Pandas будут лучше, если это возможно. Я также не могу просто пересчитать на заданной частоте, потому что интервал между импульсами периодически меняется. Основной проблемой является период временных меток между изменениями импульсов, поэтому общее правило повторной выборки не будет работать. Я также столкнулся с проблемами при сопоставлении длин фрейма данных при извлечении временных отметок, связанных с импульсами, и применении их к основному в качестве нового индекса.