【发布时间】:2021-07-24 17:30:06
【问题描述】:
我需要基于某些标准的数据集的组行。我的输入数据集就像 df1 :
+------------+----------+----------------------------+------------------+-------+
| col_1 | col_2|col_3 | tp | range|
+------------+----------+----------------------------+------------------+-------+
|MP |W | X|10 |]0,3] |
|MP |W | X|20 |]12,30]|
|MP |W | X|18 |]12,30]|
|MP |W | X|18 |]0,3] |
|MP |W | X|30 |]0,3] |
|MP |W | X|50 |]12,30]|
|MP |W | X|18 |]12,30]|
|MP |W | X|60 |]12,30]|
|MP |W | X|50 |]12,30]|
|MP |W | X|70 |]12,30]|
|MP |W | X|18 |]12,30]|
|MP |W | X|90 |]12,30]|
|MP |W | X|18 |]36,48]|
|MP |W | X|18 |]36,48]|
|MP |W | X|18 |]12,30]|
|MP |W | X|180 |]12,30]|
|MP |W | X|18 |]36,48]|
|MP |W | X|18 |]12,30]|
|MP |W | S2E|19 |]24,36]|
|MP |W | S2E|40 |]24,36]|
+------------+----------+----------------------------+------------------+-------+
我想做的是:
- 按范围分组 df1 的行(最后一列)[df = df1.select("*").groupby("col_1", "col_2", "col_3", "tp", "range"]
- 对于同一范围内的行,创建子组,其中同一子组的 2 个产量(列名 = tp)之间的比率小于 2 [即 tp(i-1)/tp(i)
在 ]12,30] 范围的输出中,我将有类似的内容:
+------------+----------+----------------------------+------------------+-------+------------+
| col_1 | col_2|col_3 | tp | range| subgroup |
+------------+----------+----------------------------+------------------+-------+------------+
|MP |W | X|20 |]12,30]|subgroup_1 |
|MP |W | X|18 |]12,30]|subgroup_1 |
|MP |W | X|50 |]12,30]|subgroup_2 |
|MP |W | X|18 |]12,30]|subgroup_1 |
|MP |W | X|60 |]12,30]|subgroup_2 |
|MP |W | X|50 |]12,30]|subgroup_2 |
|MP |W | X|70 |]12,30]|subgroup_2 |
|MP |W | X|90 |]12,30]|subgroup_2 |
|MP |W | X|180 |]12,30]|subgroup_3 |
+------------+----------+----------------------------+------------------+-------+------------+
有人有解决方案吗?我正在使用 Spark Java。
【问题讨论】:
-
tp(i-1)/tp(i) < 2 or tp(i-2)/tp(i) < 2到底是什么意思?就像用前一行扫描每一行并将结果设置为subgroup列中的标签一样?什么是tp(i)、tp(i-1)。tp(i-2)在这里,基于您的(分组的)DataFrame? -
With (tp(i-1)/tp(i) 我的意思是,在创建子组之后,如果我在该子组中随机取 2 行,则它们的 tp 值(数据集的列“tp”)之间的比率必须小于 2。可能是输出数据集更好地说明。感谢您的帮助。
-
不是
machine-learning问题,请不要向无关标签发送垃圾邮件(已删除)。
标签: java apache-spark apache-spark-sql apache-spark-dataset