我一直在想一种更有效的方式来汇总两个值之间的数据框中的值。
所以,我有这个数据框:
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 -
有没有一种方法可以不使用循环?
谢谢你的帮助!
尝试这个:
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
来获取'-'字符本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句