Python Pandas中的列组加法

Python Pandas中的列组加法,python,pandas,Python,Pandas,我正在使用这样的数据帧: state current 0 0 0 0 0 0 0 0 1 13 1 7 1 1 1 12 0 0 0 0 0 0 1 8 1 9 state current sum 0 0 0 0 0 0 0 0 0 0 0 0 1

我正在使用这样的数据帧:

state current
  0     0
  0     0
  0     0
  0     0
  1     13
  1     7
  1     1
  1     12
  0     0
  0     0
  0     0
  1     8
  1     9
state current sum
  0     0      0
  0     0      0
  0     0      0
  0     0      0
  1     13     33
  1     7      33
  1     1      33
  1     12     33
  0     0      0
  0     0      0
  0     0      0
  1     8      17
  1     9      17
我想找出状态(和电流)不是0的电流组的和,并为组中的所有条目写下这个和。理想情况下,我会得到这样的结果:

state current
  0     0
  0     0
  0     0
  0     0
  1     13
  1     7
  1     1
  1     12
  0     0
  0     0
  0     0
  1     8
  1     9
state current sum
  0     0      0
  0     0      0
  0     0      0
  0     0      0
  1     13     33
  1     7      33
  1     1      33
  1     12     33
  0     0      0
  0     0      0
  0     0      0
  1     8      17
  1     9      17

最好的方法是将数据帧分成值不为0的组,计算总和,然后重新组装数据帧吗?

当您
groupby
时,首先检查
groupby
键是否为0,然后再执行
cumsum

df.groupby(df.state.eq(0).cumsum()).current.transform('sum')
0      0
1      0
2      0
3     33
4     33
5     33
6     33
7     33
8      0
9      0
10    17
11    17
12    17
Name: current, dtype: int64
df.groupby(df['state'].diff().ne(0).cumsum())['current'].transform('sum')