我有一个与此类似的RDD
color category
green a
green b
red a
orange a
green b
red d
green c
red d
green e
我正在尝试为每种颜色找到最常见的类别。
像这样:
[green, b] : 2
[red, d ] : 2
[orange, a] : 1
我已经用完了
rdd.countByValue()
在这种情况下,它将返回如下字典:
(color=u'green', category=u'a'): 1
(color=u'green', category=u'b'): 2
(color=u'green', category=u'c'): 1
(color=u'green', category=u'e'): 1
(color=u'red', category=u'a'): 1
(color=u'red', category=u'd'): 2
(color=u'orange', category=u'a'): 1
从这一步开始,我对如何获得每种颜色最频繁的类别一无所知。
提前致谢。
编辑:我正在尝试使用
contentDF.groupBy('color').agg({'category' : 'max'}).collect()
的不同方法,但我相信agg
参数是错误的,因为它给了我整个表的总体最大值。有什么建议么?我觉得我越来越近了!编辑:我仍在寻找解决方案...
现在,我有一个这样的表:
color category frequency
green a 1
green b 2
green c 1
green e 1
red a 1
red d 2
orange a 1
谁能建议Spark SQL查询来选择每个颜色组的最大值?
最佳答案
您可以使用collections.defaultdict
:
import collections
with open("your_file") as f:
my_dict = collections.defaultdict(int)
next(f)
for x in f:
my_dict[x.strip()] +=1
print my_dict
关于python - 查找每个变量的最频繁值(模式),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29474850/