创建一个新变量,对不同范围的值取平均值

时间:2019-04-29 13:07:23

标签: python dataframe

我有一个数据表,我想创建一个变量(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)

1 个答案:

答案 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