首页 > 解决方案 > 在数据框中切换标志之间的行的总和/平均值

问题描述

我有一个这样的数据框


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

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

0   45 (20 +25)
1   56 (26 + 30)
2   67 (18 +30 +19)
3   21 (21)
4   23 (23)

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

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

标签: pythonpython-3.xpandasdataframe

解决方案


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

df.groupby(df.flag.diff().ne(0).cumsum()).power.sum()

flag
1    45
2    56
3    67
4    21
5    23
Name: power, dtype: int64

推荐阅读