计算熊猫中每X行的动态质心

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算熊猫中每X行的动态质心相关的知识,希望对你有一定的参考价值。

以下代码给了我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的临时质心的新列,比如说每10次阅读?

我的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行内的id之间有临时质心,例如10。因此,一次每10个读数的平均质心。

因此,对于每次10行,请为每个id附加平均质心。

答案

弹出帮助列以识别组,然后使用groupbyapply模式:

import pandas as pd

# some data
x_vals = [1, 2, 3, 10, 11, 20]
y_vals = [2, 4, 6, 0, 10, 0]

data = {'x': x_vals, 'y': y_vals}

df = pd.DataFrame(data)

group_size = 3

# make "helper row" with group number
df['group'] = df.index//group_size



def centroid(row):
    return (row.x.mean(), row.y.mean())

df_centroids = df.groupby('group').apply(centroid)

print(df)
print()
print(df_centroids)

收益率:

    x   y  group
0   1   2      0
1   2   4      0
2   3   6      0
3  10   0      1
4  11  10      1
5  20   0      1

group
0                                  (2.0, 4.0)
1    (13.666666666666666, 3.3333333333333335)

以上是关于计算熊猫中每X行的动态质心的主要内容,如果未能解决你的问题,请参考以下文章

取熊猫系列中每 N 行的总和

如何计算熊猫数据框中每一列的唯一性?

熊猫箱线图中每个子图的独立轴

如何计算熊猫数据框中每组的行数并将其添加到原始数据中

如何使用在质心处计算的光来实现平面着色?

如何计算 Presto 中每 n 行的窗口函数?