如何计算scala数据帧中每列的相同值的最大数量?

时间:2017-09-18 09:13:24

标签: scala apache-spark dataframe

我有一个数据帧df如下:

val df = Seq(
  ("A", "nike",   "black"),
  ("A", "adidas", "black"),
  ("A", "nike",   "grey" ),
  ("A", "mizuno", "blue" ),
  ("A", "nike",   "black"),
  ("B", "nike",   "black"),
  ("B", "adidas", "grey" ),
  ("B", "mizuno", "grey" ))
.toDF("session", "brand", "color")

注意:在实际工作中,我不知道列名品牌和颜色,并且df中还有其他列。

在会话A中,同一品牌的总和是

(nike: 3, adidas: 1, mizuno: 1)

- 姓名在会话A中有三个Nike,一个Adidas,一个Mizuno,

因此品牌价值的最大值为3;相同颜色的总和是

(black: 3, grey: 1, blue: 1), 

所以品牌价值的最大值是3。

在会话B中,同一品牌的总和是

(nike: 1, adidas: 1, mizuno: 1), 

因此品牌价值的最大值为1;相同颜色的总和是

(black: 1, grey: 2), 

所以品牌价值的最大值为2。

预期结果数据框如下:

val df1 = Seq(
("A", 3, 3),
("B", 1, 2)).toDF("session", "brand_value", "color_value)

在实际工作中,有很多会话,每个会话中有很多列以及许多属性值(例如nike,adidas,blue,black等),我以前在df中都不知道;如何方便地获得结果数据帧df1?

0 个答案:

没有答案