Как выстроить набор данных в пандах? - PullRequest
0 голосов
/ 30 сентября 2019

У меня большой массив данных, который включает название канала, время, значения, интервал обновления. Он сгруппирован по ch_name. Время = когда данные получены, интервал обновления = разница между первым полученным и вторым полученным значением (это данные телеметрии, где каналы обновляются с определенной скоростью в соответствии с их функциями).

Итак, у меня есть интервалы обновления: 1, 4, 10, 20, 30, 60 (с). Мне нужен фрейм данных, где все интервалы обновления равны 60 секундам. Например, Channel_X имеет интервал обновления 1 сек. Поэтому мне нужно среднее значение по данным 60 секунд. (Мне не нужно 60 данных в течение 60 секунд, мне нужно только одно среднее значение в течение 60 секунд) и так далее. Если интервал обновления равен 4 секундам, мне нужно среднее значение из 15 значений в течение 60 секунд. См. Вывод данных кадра ниже:

ch_name                time  value  interval
167      ADCS.GPS_EPI_-_ECC 2019-09-26 00:00:06  0.001       4.0
442      ADCS.GPS_EPI_-_ECC 2019-09-26 00:00:10  0.001       4.0
548      ADCS.GPS_EPI_-_ECC 2019-09-26 00:00:14  0.001       4.0
752      ADCS.GPS_EPI_-_ECC 2019-09-26 00:00:18  0.001       4.0
916      ADCS.GPS_EPI_-_ECC 2019-09-26 00:00:22  0.001       4.0
...                     ...                 ...    ...       ...
5925943  ADCS.GPS_EPI_-_ECC 2019-09-27 08:59:41  0.001       4.0
5926102  ADCS.GPS_EPI_-_ECC 2019-09-27 08:59:45  0.001       4.0
5926265  ADCS.GPS_EPI_-_ECC 2019-09-27 08:59:49  0.001       4.0
5926432  ADCS.GPS_EPI_-_ECC 2019-09-27 08:59:53  0.001       4.0
5926595  ADCS.GPS_EPI_-_ECC 2019-09-27 08:59:57  0.001       4.0


ch_name                time  value  interval
498      Payload.OBCARM_DCDC_Temp_degC 2019-09-26 00:00:13  5.229      10.0
988      Payload.OBCARM_DCDC_Temp_degC 2019-09-26 00:00:23  5.229      10.0
1324     Payload.OBCARM_DCDC_Temp_degC 2019-09-26 00:00:33  5.229      10.0
1895     Payload.OBCARM_DCDC_Temp_degC 2019-09-26 00:00:43  5.383      10.0
2254     Payload.OBCARM_DCDC_Temp_degC 2019-09-26 00:00:53  5.383      10.0
...                                ...                 ...    ...       ...
5926944  Payload.OBCARM_DCDC_Temp_degC 2019-09-27 09:02:52  6.617      11.0
5926960  Payload.OBCARM_DCDC_Temp_degC 2019-09-27 09:03:02  6.617      10.0
5926979  Payload.OBCARM_DCDC_Temp_degC 2019-09-27 09:03:13  6.617      11.0
5926989  Payload.OBCARM_DCDC_Temp_degC 2019-09-27 09:03:23  6.617      10.0
5927004  Payload.OBCARM_DCDC_Temp_degC 2019-09-27 09:03:34  6.617      11.0




ch_name                time  value  interval
2917     Housekeeping.PDM_0__SW10_Status 2019-09-26 00:01:06    0.0      30.0
4318     Housekeeping.PDM_0__SW10_Status 2019-09-26 00:01:36    0.0      30.0
5713     Housekeeping.PDM_0__SW10_Status 2019-09-26 00:02:06    0.0      30.0
7073     Housekeeping.PDM_0__SW10_Status 2019-09-26 00:02:36    0.0      30.0
8518     Housekeeping.PDM_0__SW10_Status 2019-09-26 00:03:06    0.0      30.0
...                                  ...                 ...    ...       ...
5398900  Housekeeping.PDM_0__SW10_Status 2019-09-27 05:57:36    0.0      30.0
5400155  Housekeeping.PDM_0__SW10_Status 2019-09-27 05:58:06    0.0      30.0
5401490  Housekeeping.PDM_0__SW10_Status 2019-09-27 05:58:36    0.0      30.0
5402885  Housekeeping.PDM_0__SW10_Status 2019-09-27 05:59:06    0.0      30.0
5404257  Housekeeping.PDM_0__SW10_Status 2019-09-27 05:59:36    0.0      30.0

1 Ответ

0 голосов
/ 30 сентября 2019

Вы можете использовать pandas.Grouper для этого:

df.groupby(pd.Grouper(key='time', freq='60min')).mean()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...