我一直在思考以更有效的方式总结数据框中两个值之间的值。
所以,我有这个数据框:
Event Value
==============
Start -
Action 11
Action 6
Action 3
End -
Start -
Action 8
Action 6
End -
所以我想要做的是将 Start 和 End 之间的所有值相加,并将该值存储在初始 Start 中
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 -
详细信息:
- 对事件等于“Start”的事件的
cumsum
使用groupby
,以 创建群组 - 然后使用
transfrom
计算 sum 和mask
事件不等于 从原始“值”开始 - 然后使用
fillna
取回'-'字符
关于python - Pandas - 汇总两个值之间的两行之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59738815/