Как отбросить группы, если их время появления превышает 300 секунд? - PullRequest
0 голосов
/ 02 октября 2019

У меня есть фрейм данных со столбцами: ch_name, время, значения и интервалы. Я поместил этот dataframe в цикл for, чтобы он группировал данные по ch_name. Значения времени в кадре для всех каналов начинаются с ДД: ММ: ГГГГ 00:00:00 (всегда). Я хочу удалить группы, если значение столбца «время» превышает 300 секунд. Поэтому я не хочу видеть группы, если их время начинается, например, 00:01:15 или 11:32:05 и так далее. Он должен хранить группы с датой 00:00:00.

[1439 rows x 4 columns]
                              ch_name                time    value  interval
0     LIN.Switch_Transaction_OK_Count 2019-09-19 00:01:00  23028.0      60.0
1     LIN.Switch_Transaction_OK_Count 2019-09-19 00:02:00  23028.0      60.0
2     LIN.Switch_Transaction_OK_Count 2019-09-19 00:03:00  23028.0      60.0
3     LIN.Switch_Transaction_OK_Count 2019-09-19 00:04:00  23028.0      60.0
4     LIN.Switch_Transaction_OK_Count 2019-09-19 00:05:00  23028.0      60.0
...                               ...                 ...      ...       ...
1434  LIN.Switch_Transaction_OK_Count 2019-09-19 23:55:00  23116.0      60.0
1435  LIN.Switch_Transaction_OK_Count 2019-09-19 23:56:00  23116.0      60.0
1436  LIN.Switch_Transaction_OK_Count 2019-09-19 23:57:00  23116.0      60.0
1437  LIN.Switch_Transaction_OK_Count 2019-09-19 23:58:00  23116.0      60.0
1438  LIN.Switch_Transaction_OK_Count 2019-09-19 23:59:00  23117.0      60.0

[1439 rows x 4 columns]
              ch_name                time   value  interval
0     LIN.Cold_Resets 2019-09-19 00:01:00  1015.0      60.0
1     LIN.Cold_Resets 2019-09-19 00:02:00  1015.0      60.0
2     LIN.Cold_Resets 2019-09-19 00:03:00  1015.0      60.0
3     LIN.Cold_Resets 2019-09-19 00:04:00  1015.0      60.0
4     LIN.Cold_Resets 2019-09-19 00:05:00  1015.0      60.0
...               ...                 ...     ...       ...
1434  LIN.Cold_Resets 2019-09-19 23:55:00  1015.0      60.0
1435  LIN.Cold_Resets 2019-09-19 23:56:00  1015.0      60.0
1436  LIN.Cold_Resets 2019-09-19 23:57:00  1015.0      60.0
1437  LIN.Cold_Resets 2019-09-19 23:58:00  1015.0      60.0
1438  LIN.Cold_Resets 2019-09-19 23:59:00  1015.0      60.0

[1439 rows x 4 columns]
                         ch_name                time      value  interval
0   Payload.PAX_Temperature_degC 2019-09-19 11:20:00   9.800000      60.0
1   Payload.PAX_Temperature_degC 2019-09-19 11:21:00  13.800000      60.0
2   Payload.PAX_Temperature_degC 2019-09-19 11:22:00  15.933333      60.0
3   Payload.PAX_Temperature_degC 2019-09-19 11:23:00  17.600000      60.0
4   Payload.PAX_Temperature_degC 2019-09-19 11:24:00  19.000000      60.0
5   Payload.PAX_Temperature_degC 2019-09-19 11:25:00  20.066667      60.0
6   Payload.PAX_Temperature_degC 2019-09-19 11:26:00  21.133333      60.0
7   Payload.PAX_Temperature_degC 2019-09-19 11:27:00  22.133333      60.0
8   Payload.PAX_Temperature_degC 2019-09-19 11:28:00  23.000000      60.0
9   Payload.PAX_Temperature_degC 2019-09-19 11:29:00  23.866667      60.0
10  Payload.PAX_Temperature_degC 2019-09-19 11:30:00  24.666667      60.0
11  Payload.PAX_Temperature_degC 2019-09-19 11:31:00  25.466667      60.0
12  Payload.PAX_Temperature_degC 2019-09-19 11:32:00  25.800000      60.0
                               ch_name                time     value  interval
0   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:20:00  1.600000      60.0
1   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:21:00  1.600000      60.0
2   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:22:00  1.600000      60.0
3   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:23:00  1.600000      60.0
4   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:24:00  1.600000      60.0
5   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:25:00  1.600000      60.0
6   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:26:00  1.600000      60.0
7   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:27:00  1.597167      60.0
8   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:28:00  1.583000      60.0
9   Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:29:00  1.583000      60.0
10  Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:30:00  1.588667      60.0
11  Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:31:00  1.597167      60.0
12  Payload.X-band_TX-0_SW13_Current_A 2019-09-19 11:32:00  1.600000      60.0

Итак, мне не нужны последние 2 группы, потому что каналы появились в 11:20:00. Спасибо

1 Ответ

0 голосов
/ 02 октября 2019

Сначала получите минимальное время на канал, затем выберите все каналы, где минимальное время меньше указанного порогового значения (в данном примере 300 с = 5 мин = datetime.time (0,5,0))

import datetime
grp = df.groupby('ch_name').time.min().dt.time
df = df[df.ch_name.isin(grp[grp <= datetime.time(0,5,0)].index)]

Обновление для максимального времени:

После фильтрации в течение минимума сделайте то же самое для максимума:

grp = df.groupby('ch_name').time.max().dt.time
df = df[df.ch_name.isin(grp[grp >= datetime.time(23,55,0)].index)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...