我有一个数据帧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?