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')