pandas - 如何使用 pandas group-by 仅对后续/不间断的元素进行分组?
问题描述
如果我在下面的示例中执行 groupby,我将获得所有带有“A”的条目的总和。我只想总结不间断的、随后出现的“A”。这可能与 groupby 吗?还有另一种方法可以做到这一点吗?
我已经通过使用一些自定义循环来解决它,但是太慢了。
pandas as pd
foo = pd.DataFrame({'bar':['A','A','B','A','A','A','C'],'foobar': [1,2,3,4,5,6,7]})
foo.groupby('bar').sum()
A 的总和现在的输出是 18。我想要 A1 = 3、B = 3、A2 = 15 等的总和。
解决方案
我终于找到了解决方案:
foo = pd.DataFrame({'bar':['A','A','B','A','A','A','C'], 'foobar': [1,2,3,4,5,6,7]})
foo['group_index'] = (foo['bar'] != foo['bar'].shift()).cumsum()
foo.groupby(['bar', 'group_index']).sum()
希望这对其他人有帮助。
推荐阅读
- python - python/flask 应用程序码头化期间的问题
- flutter - 将 Dart 中的地图更新到 Firestore
- c# - 如何检查可空 int 类型的查询字符串是否无效?
- c# - #c 异步 MySqlConnector
- javascript - v-tab-item 内容上的引用在挂载的钩子中为空
- r - 如何在R中将字符串双精度转换为数字双精度?
- c# - Newtonsoft JConverter
读取对象或数组 (oneOf) - celery - 芹菜只在给定的时间范围内运行任务
- websphere - 网络球 | 弹簧状态机 | UML 错误加载
- php - 混合 __get 和 __set 调用的 PHP 问题