python - Pandas:如何通过某些列的值总和或按行数聚合数据?
问题描述
我有 Pandas 数据框,它很简单:
>columnA
>>1
>>20
>>3
>>4
>>15
>>0
我想以两种方式聚合这个数据框:
只需按行数聚合:例如,对每 3 行求和 columnA 值。即在这个转变之后我应该得到
aggregatedByCount 24 19
当 columnA 中的值总和超过某个阈值时聚合,例如 10。即在此之后我应该得到
aggregatedBySum 21 22
是否可以在没有循环的情况下实现这一点?
解决方案
第一个选项
df.groupby(df.index // 3).sum()
columnA
0 24
1 19
第二个选项cumsum 两次划分阈值并在阈值建立后设置新组。
df['groups']=(df.groupby(df.index ).cumsum()>10)
df.groupby(df['groups'].shift().fillna(True)\
.cumsum()).columnA.sum()[lambda x: x >10]
groups
1 21
2 22
推荐阅读
- php - Laravel - 从数据透视表中获取额外的列值
- python-3.x - 尝试使用 pytorch 训练神经网络时,“AttributeError:classificadorFinal”对象没有属性“log_softmax”
- php - Symfony 翻译:更新实体注释
- javascript - 如何将 JS 变量(来自 EOD 标记嵌入脚本)从同一个 PHP 文件中传递回 PHP?
- java - 从字节/帧 Java/Android 创建可播放的视频流
- docker - 使用动态值永久更改 Dockerfile 中的 PATH
- javascript - 如何将远程服务中的 PDF 嵌入到 html 页面中?
- class - 无法在 Dart 中初始化静态成员
- javascript - 传单将多边形添加到图层
- javascript - 在 Firefox 中检查内存中的对象以检测泄漏