Я пытаюсь сгруппировать мой набор данных CSV по переменным time_start и time_end с пандами в зависимости от времени между взаимодействиями (в данном случае> 20 секунд).
Однако, когда я применяю свою групповую обработку и агрегирование, мой результат представляет собой фрейм данных только с переменными time_start, time_end и total_time.Теперь я не могу знать, какие tag_me или tag_them имели эти соединения.что я делаю не так здесь?
оригинальный набор данных:
tag_me,tag_them,time_remote_s,rssi,angle,group,time_start,time_end,total_time
0x597E5627,0x3C992634,932,-94,14,1,1356,1363,7
0x597E5627,0x7DA8FFB0,167,-87,13,1,1364,1364,0
0x597E5627,0x3C992634,941,-84,7,1,1365,1366,1
0x597E5627,0x7DA8FFB0,169,-90,4,1,1366,1366,0
0x597E5627,0x36570942,906,-94,4,1,1366,1366,0
0x597E5627,0x3C3A21AD,728,-90,8,1,1369,1369,0
0x597E5627,0x06497CA4,155,-87,7,1,1370,1374,4
0x597E5627,0x064F5882,313,-83,6,1,1379,1379,0
0x597E5627,0x06497CA4,166,-94,10,1,1381,1381,0
0x597E5627,0x064F5882,316,-94,8,1,1381,1382,1
0x597E5627,0x36570942,923,-94,7,1,1383,1390,7
мой алгоритм, который смотрит время начала и окончания каждой строки:
df = df.groupby(((df.time_start - df.time_end.shift(1)) < 20).cumsum()).agg({'time_start':min, 'time_end':max, 'total_time':sum})
мой результат:
time_start, time_end, total_time
0, 1356, 1404, 22
1, 1427, 1427, 0
2, 1463, 1463, 0
3, 1502, 1727, 115
4, 1755, 2506, 737
5, 2540, 2596, 17
6, 2628, 2681, 33
Я потерял всю информацию об имени tag_me и tag_them.Мой желаемый результат по-прежнему содержит все остальные столбцы.Я хочу объединить все строки tag_me и tag_them, которые имеют одинаковые идентификаторы и находятся в окне по 20 секунд друг от друга.
Что я делаю не так?