我正在尝试获取数据帧中所有列的前n个频率计数
counts = (df.rdd
.flatMap(lambda x: x.asDict().items())
.map(lambda x: (x, 1))
.reduceByKey(add))
我得到这个: (((列名/值),计数)
(('name', 'Dominion Range 08357'), 1)
(('id', 52132), 1)
(('nametype', 'Valid'), 10)
(('recclass', 'L6'), 2)
(('mass (g)', 8.9), 1)
(('fall', 'Found'), 10)
(('year', '01/01/2008 12:00:00 AM'), 2)
(('reclat', 0.0), 1)
(('reclong', 0.0), 1)
(('GeoLocation', '(0.000000, 0.000000)'), 1)
(('name', 'Yamato 792863'), 1)
(('id', 28212), 1)
(('recclass', 'H5'), 3)
(('mass (g)', 132.25), 1)
(('year', '01/01/1979 12:00:00 AM'), 1)
(('reclat', -71.5), 1)
(('reclong', 35.66667), 1)
(('GeoLocation', '(-71.500000, 35.666670)'), 1)
之后,我尝试获取前10个值:
(counts
.groupBy(lambda x: x[0])
.flatMap(lambda g: nlargest(10, g[1], key=lambda x: x[1])))
但是我得到了相同的结果。 有帮助吗?
答案 0 :(得分:0)
我只是弄清楚了。我失踪了,在groupBy
counts = (df.rdd
.flatMap(lambda x: x.asDict().items())
.map(lambda x: (x, 1))
.reduceByKey(add)
.groupBy(lambda x: x[0][0])
.flatMap(lambda g: nlargest(3, g[1], key=lambda x: x[1])))