Как работать с индексом времени с помощью groupby в python - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть CSV-файл с несколькими переменными.
Среди переменных дата и время включены отдельно.
Следующее изображение является формой моих данных:

  Date         Time       Axis1     Axis2    Axis3
   .             .         .          .       .
   .             .         .          .       .
2017-10-15    13:40:00     20         0       40
2017-10-15    13:40:10     40         10      100
2017-10-15    13:40:20     50         0       0
2017-10-15    13:40:30     10         10      60
2017-10-15    13:40:40     0          0       20
2017-10-15    13:40:50     0          0       10
2017-10-16    06:20:30     10         0       10
2017-10-16    06:20:40     70         0       10
2017-10-16    06:20:50     20         100     80
   .             .         .          .       .
   .             .         .          .       .

и есть еще строки. (Более десяти тысяч)
Вы можете заметить, что между 10/15 и 10/16 есть промежутки времени .
Я бы хотел суммировать все три значения Оси по минутам.
Что я ожидаю, так это структура:

  Date         Time       Axis1     Axis2    Axis3
   .             .         .          .       .
   .             .         .          .       .
2017-10-15    13:40:00     120        20      230
2017-10-16    06:20:00     100        100     100
2017-10-16    06:21:00     ?          ?       ?
   .             .         .          .       .
   .             .         .          .       .

Я пытался использовать groupby, resample и pd.Grouper, но у меня это не работает.
Основная проблема в том, что индекс времени не начинается с 13:40:00, а начинается с 00: 00: 00 после того, как я поставил время в качестве индекса и использовал groupby ('Date') и ресэмплировать ( '') 1мин. (сумма) .

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 05 сентября 2018

Давайте попробуем:

df = df.set_index(pd.to_datetime(df['Date']+' '+df['Time'], format='%Y-%m-%d %H:%M:%S'))

df.groupby(df.index.floor('T')).sum()

Выход:

                     Axis1  Axis2  Axis3
2017-10-15 13:40:00    120     20    230
2017-10-16 06:20:00    100    100    100

Примечание: Используйте format параметр в pd.to_datetime для повышения эффективности. Используйте floor, чтобы избежать повторной выборки или группировки в пропущенное время.

...