我是scala的新手,假设我有一个数据集:
>>> ds.show()
+--------------+-----------------+-------------+
|year |nb_product_sold | system_year |
+--------------+-----------------+-------------+
|2010 | 1 | 2012 |
|2012 | 2 | 2012 |
|2012 | 4 | 2012 |
|2015 | 3 | 2012 |
|2019 | 4 | 2012 |
|2021 | 5 | 2012 |
+--------------+-----------------+-------+
我有一个 List<Integer> years = {1, 3, 8}
,这意味着 x
年后 system_year
一年。目标是计算每种产品的总销售量 year
之后 system_year
.
换言之,我必须计算2013年、2015年、2020年的产品销售总额。
输出数据集应如下所示:
+-------+-----------------------+
| year | total_product_sold |
+-------+-----------------------+
| 1 | 6 | -> 2012 - 2013 6 products sold
| 3 | 9 | -> 2012 - 2015 9 products sold
| 8 | 13 | -> 2012 - 2020 13 products sold
+-------+-----------------------+
我想知道在斯卡拉怎么做?我应该用吗 groupBy()
在这种情况下?
2条答案
按热度按时间gcxthw6b1#
如果年份范围没有重叠,您可以使用groupby case/when。但在这里,您需要每年执行一次groupby,然后合并3个分组的Dataframe:
rkkpypqq2#
可能有多种方式做事情,比我展示给你的更有效率,但它适用于你的用例。
您可以看到如下输出: