python - Python pandas cumsum 在另一列中按值重置
问题描述
我有几个模拟的成功/失败数据。每个模拟都包含几个试验,我想要每个模拟成功的累积总和。这是我的数据示例:
data = pd.DataFrame([[0, 0, 0],
[0, 1, 0],
[0, 2, 1],
[0, 3, 0],
[1, 0, 1],
[1, 1, 0],
[1, 2, 0],
[1, 3, 1],
[2, 0, 0],
[2, 1, 1],
[2, 2, 1],
[2, 3, 1],
[0, 0, 0],
[0, 1, 1],
[0, 2, 1],
[0, 3, 0]],
columns=['simulation', 'trial', 'success'])
使用这个答案,我想出了以下代码,但它不是很有效,我不知道为什么。
cumsum = data['success'].cumsum()
reset = -cumsum[data['trial'] == 0].diff().fillna(cumsum)
data['cumsum'] = data['success'].where(data['trial'] != 0, reset).cumsum()
结果列是[0, 0, 1, 1, -1, -1, -1, 0, -1, 0, 1, 2, -1, 0, 1, 1]
,但我期望[0, 0, 1, 1, 1, 1, 1, 2, 0, 1, 2, 3, 0, 1, 2, 2]
解决方案
推荐阅读
- php - 如何使用 PHP cURL 从第三方 api 获取数据?
- javascript - 如何修复父菜单中的大型列表项时侧边栏子菜单项溢出
- git - Github 中分支保护规则中的“或”条件
- javascript - 如何使用reduce将对象转换为对象数组?
- php - 需要合并具有相同键值对的单个数组元素
- c++ - C++ 使用 Map 中的参数调用函数
- javascript - 同一页面的不同实例的不同唯一令牌
- javascript - 测试一个使用 setTimeout 和 Jest 的函数:为什么这个测试失败了?
- ios - 如何将 TableViewCell 中的数据作为按钮执行?
- ios - 应用程序从一个 Apple 开发者帐户转移到另一个帐户的后果是什么?