我一直在想一种更有效的方式来汇总两个值之间的数据框中的值。
所以,我有这个数据框:
Event Value
==============
Start -
Action 11
Action 6
Action 3
End -
Start -
Action 8
Action 6
End -
所以我要做的是将开始和结束之间的所有值相加,并将该值存储在初始的开始
Event Value
==============
Start 20
Action 11
Action 6
Action 3
End -
Start 14
Action 8
Action 6
End -
有没有一种方法可以不使用循环?
感谢您的帮助!
答案 0 :(得分:3)
尝试一下:
df['Value'] = df['Value'].replace('-', np.nan).astype(float)
df['Value'] = (df.groupby(df['Event'].eq('Start').cumsum())['Value']
.transform('sum')
.mask(df['Event'] != 'Start', df['Value'])
.fillna('-'))
输出:
Event Value
1 Start 20
2 Action 11
3 Action 6
4 Action 3
5 End -
6 Start 14
7 Action 8
8 Action 6
9 End -
详细信息:
groupby
的事件上使用cumsum
,其中事件等于“开始”,以
创建群组transfrom
计算总和和mask
个事件,它们不等于
从原始的“值”开始fillna
取回'-'字符