我有一个数据表,我想创建一个变量(f)的平均值,以使其从计数器为1时开始,并在变量再次变为时结束。
这就是数据框的开头
f counter
49.798 1
49.797 2
49.793 3
49.792 4
49.794 5
50.203 1
50.201 1
50.201 2
50.202 1
50.205 2
50.206 3
50.209 4
50.21 5
50.212 6
50.21 7
50.211 8
50.211 9
50.211 10
50.212 11
50.21 12
50.206 13
50.205 14
50.206 15
50.201 16
输出应如下所示:
Average
49.7948
50.203
50.201
50.2079375
我不知道该怎么做
我已经尝试过将这些值相加,但是不起作用
def sum_f(x):
global total
if counter == 1:
total == f
return int(total)
if counter == 1:
total == f
return int(total)
else:
total =+ f
return int(total)
答案 0 :(得分:3)
此处,我们创建了一个新的run
列,该列在值1
时都会增加。然后,我们将该列分组并取f
值的平均值:
df['run'] = (df.counter == 1).cumsum()
df.groupby('run').f.agg(np.mean)
结果
run
1 49.794800
2 50.203000
3 50.201000
4 50.207938
Name: f, dtype: float64