通过pandas中的区间坐标计算平均值

Calculate mean value by interval coordinates in pandas

我有一个数据框,例如:

Name Position Value
A    1        10
A    2        11
A    3        10
A    4        8
A    5        6
A    6        12
A    7        10
A    8        9
A    9        9
A    10       9
A    11       9
A    12       9

我想为每个 3 个位置的间隔计算值的平均值。 并使用 startend 坐标(然后长度为 3)和 Mean_value 列创建一个新的 df。

Name Start End Mean_value 
A    1     3   10.33     <---- here this is (10+11+10)/3 = 10.33 
A    4     6   8.7
A    7     9   9.3
A    10    13  9 

有人知道使用 pandas 吗?

Name 组获取每 3 行(如果存在)的解决方案 - 首先通过 GroupBy.cumcount 通过整数除法获取计数器并将其传递给命名聚合:

g = df.groupby('Name').cumcount() // 3
df = df.groupby(['Name',g]).agg(Start=('Position','first'),
                                End=('Position','last'),
                                Value=('Value','mean')).droplevel(1).reset_index()
print (df)
  Name  Start  End      Value
0    A      1    3  10.333333
1    A      4    6   8.666667
2    A      7    9   9.333333
3    A     10   12   9.000000