python - 用 Groupby 总结一些行和一些列
问题描述
我有一个简化的大型数据集,如下所示:
Name c1 c2 c3 c4
0 a1 1 2 2 3
1 a2 2 1 1 2
2 a3 3 1 2 1
3 a4 2 3 3 4
4 b1 1 2 2 3
5 b2 3 1 2 1
6 b3 2 1 2 1
7 b4 1 3 4 1
我想总结一些列和一些行以创建一个如下所示的聚合数据框:
Name c1+c2 c3+c4
0 a1+a2 6 8
1 a3+a4 9 10
2 b1+b2 7 8
3 b3+b4 7 8
我一直在试图弄清楚如何使用 groupby 和 sum 来做到这一点,但我对此很陌生,无法理解它。任何帮助将不胜感激!
解决方案
首先,您需要为需要组合的行提供唯一标识符,即
uq_grp Name c1 c2 c3 c4
grp1 a1 1 2 2 3
grp1 a2 2 1 1 2
grp2 a3 3 1 2 1
grp2 a4 2 3 3 4
grp3 b1 1 2 2 3
grp3 b2 3 1 2 1
uq_grp基本上定义了现在需要合并哪些行:
df['c1+c2'] = df['c1']+df['c2']
df['c3+c4'] = df['c3']+df['c4']
uq_grp Name c1 c2 c3 c4 c1+c2 c3+c4
grp1 a1 1 2 2 3 3 5
grp1 a2 2 1 1 2 3 3
grp2 a3 3 1 2 1 4 3
grp2 a4 2 3 3 4 5 7
grp3 b1 1 2 2 3 3 5
grp3 b2 3 1 2 1 4 3
现在根据 uq_grp 组合行
df.groupby(['uq_grp'],as_index=False)[['c1+c2','c3+c4']].sum()
结果
Name c1+c2 c3+c4
0 grp1 6 8
1 grp2 9 10
2 grp3 7 8
....
推荐阅读
- scroll - 滚动 arduino LCD 20x4
- c# - 如何从子 ViewModel 访问父 ViewModel 属性?
- javascript - 尝试在树javascript中递归查找元素
- python - 如何在Python数据框中添加带有字典字符串值的列
- vim - 如何在 Vim 的 netrw 中获取文件路径或文件名
- r - 对子组内的计算(cumsum)使用单一、通用的组特定基线
- flutter - 对同一视图中的两个图像使用 ImagePicker
- hadoop - HBase 全分布式模式 [执行 HBase shell 时出现 Zookeeper 错误]
- laravel - Laravel 组件构造方法只在本地环境下工作
- java - APPLICATION_STREAM_JSON_VALUE 和 APPLICATION_NDJSON_VALUE 之间的区别