Следующий код дает мне общий центр тяжести всех чтений моего df.
pos = df4[['x', 'y']].to_numpy() # gives me all the x-,y-coordinates in df4
def centroid(arr):
length = arr.shape[0]
sum_x = np.sum(arr[:, 0])
sum_y = np.sum(arr[:, 1])
return sum_x/length, sum_y/length
coll_cps = np.array(centroid(pos)) # Create centroids between ids
Как я могу создать новый столбец с временными центроидами каждого ID человека, скажем, для каждого десятого чтение?
Мой df выглядит так:
x y id time
0 162 282 2700 0
1 162 282 2819 0
2 162 282 2820 0
3 449 235 2700 1
4 449 235 2820 1
5 449 235 2819 1
6 457 293 2819 2
7 457 293 2820 2
8 457 293 2700 2
9 164 283 2700 3
10 164 283 2819 3
11 164 283 2820 3
12 457 293 2700 4
13 457 293 2820 4
14 457 293 2819 4
15 450 235 2700 5
16 450 235 2820 5
17 450 235 2819 5
18 449 234 2700 6
19 449 234 2819 6
20 449 234 2820 6
21 456 293 2820 7
22 456 293 2819 7
23 456 293 2700 7
24 167 277 2820 8
25 167 277 2700 8
26 167 277 2819 8
27 167 277 2820 9
28 167 277 2700 9
29 167 277 2819 9
... ... ... ...
Выходными данными должен быть новый столбец с временными центроидами между идентификаторами в x строках, например, 10. Таким образом, средний центроид на 10 показаний за раз.
Итак, к 10 строкам за один раз добавьте средний центроид для каждого идентификатора.