总和/标记之间的行的平均值在数据框中切换

Ami*_*pta 2 python dataframe python-3.x pandas

我有一个这样的数据框


id  power   flag
0   20      0
1   25      0
2   26      1
3   30      1
4   18      0
5   30      0
6   19      0
7   21      1
8   23      0
Run Code Online (Sandbox Code Playgroud)

我正在尝试获得功率列的平均值/总和,输出应如下所示

0   45 (20 +25)
1   56 (26 + 30)
2   67 (18 +30 +19)
3   21 (21)
4   23 (23)
Run Code Online (Sandbox Code Playgroud)

另外,如果标志不是二进制的怎么办?

有人可以帮我这些吗?谢谢

raf*_*elc 5

IIUC,使用来自布尔值的累积和diff.ne(0)作为分组器,并且sum

df.groupby(df.flag.diff().ne(0).cumsum()).power.sum()
Run Code Online (Sandbox Code Playgroud)
flag
1    45
2    56
3    67
4    21
5    23
Name: power, dtype: int64
Run Code Online (Sandbox Code Playgroud)

  • 然后,您可以将.power替换为.agg({'power':['sum','mean']})``.power.sum()`,以求和和均值。 (2认同)