apache-spark - 数据框的多维数据集/汇总功能,但跳过火花中少数记录的列的总和
问题描述
我有以下数据框:
+--------+------+---------+---------+
| Col1 | col2 | values1 | Values2 |
+--------+------+---------+---------+
| item1 | A1 | 5 | 11 |
| item1 | A2 | 5 | 25 |
| item1 | A3 | 5 | 33 |
| item1 | na | | 18 |
| item2 | A1 | 6 | 12 |
| item2 | A2 | 6 | 26 |
| item2 | A3 | 6 | 34 |
| item2 | na | 6 | |
+--------+------+---------+---------+
可以使用此代码创建
df = Seq(
(item1, A1,5 ,11),
(item1, A2,5 ,25),
(item1, A3,5 ,33),
(item1, na,0,18),
(item2, A1,6 ,12),
(item2, A2,6 ,26),
(item2, A3,6 ,34),
(item2, na,6 ,0)).toDF('Col1', 'col2', 'values1', 'Values2');
我想在对其进行汇总或多维数据集时跳过为所有记录添加列值1。
我想要的输出:
+-------+------+---------+---------+
| Col1 | col2 | values1 | values2 |
+-------+------+---------+---------+
| null | null | 17 | 159 |
| item1 | null | 5 | 87 |
| item1 | A1 | 5 | 11 |
| item1 | A2 | 5 | 25 |
| item1 | A3 | 5 | 33 |
| item1 | na | 0 | 18 |
| item2 | null | 12 | 72 |
| item2 | A1 | 6 | 12 |
| item2 | A2 | 6 | 26 |
| item2 | A3 | 6 | 34 |
| item2 | na | 6 | |
+-------+------+---------+---------+
如何获得应用于此数据集的汇总或多维数据集函数,以便 values1 到 Col1 的总和应该总结 (A1/A2/A3)+na= 的值,例如:
第二行显示
values1 =5= 5+0 and values2 = 87=11+25+33+18 and the 6th row values1 =12=6+6 and values2 =12+26+34+0=72
但是我现在通过进行汇总操作得到的是将所有我不想为values1列发生的 agg 加起来。
df.rollup("Col1","col2").agg(sum("values1") as "values1",sum("values2") as "values2");
电流输出:
+-------+------+---------+---------+
| Col1 | col2 | values1 | values2 |
+-------+------+---------+---------+
| null | null | 39 | 159 |
| item1 | null | 15 | 87 |
| item1 | A1 | 5 | 11 |
| item1 | A2 | 5 | 25 |
| item1 | A3 | 5 | 33 |
| item1 | na | 0 | 18 |
| item2 | null | 24 | 72 |
| item2 | A1 | 6 | 12 |
| item2 | A2 | 6 | 26 |
| item2 | A3 | 6 | 34 |
| item2 | na | 6 | |
+-------+------+---------+---------+
(作为 dup 发布的链接不是这里的实际问题。所需的输出与链接中的答案不同)
解决方案
推荐阅读
- c++ - C++ 双向链表:使用矩阵类成员创建和填充列表
- pytorch - pytorch 没有 tensorflow/tensorflow:latest-gpu-jupyter 的等价物吗?
- c++ - 找到最小值
- go - 为什么 `utf8.Valid()` 认为某些有效的 UTF-8 代码无效?
- flutter - 何时在 Flutter 中使用资产
- opengl - 在 GLSL 片段着色器中使用整数 - 遇到无法解释的伪影
- angular - component.ts 无法读取类名表单服务
- python - 如何从字典查找数据框列表
- c - 有人可以向我解释这个 HASH FUNCTION 是如何工作的(如果他们有另一个更好的选择)?
- linux - 在 RPI-3B+ 中安装 OV7251 驱动程序以与 ROS 一起使用