在Pyspark中从带有字符串列表的列中获取最频繁的字符串

新叶子

使用包含一列的数据框,这些列中的值是列表,

id    |   values
1     |   ['good','good','good','bad','bad','good','good']
2     |   ['bad','badd','good','bad',Null,'good','bad']
....

如何获得列表中显示频率最高的字符串?预期输出:

id   | most_frequent
1    | 'good'
2    | 'bad'
....
Murtihash

我不看的理由explodegroupby这里(计算密集型整理操作),如Spark2.4+,我们可以用higher order functions得到您想要的输出:

from pyspark.sql import functions as F

df\
  .withColumn("most_common", F.expr("""sort_array(transform(array_distinct(values),\
                                      x-> array(aggregate(values, 0,(acc,t)->acc+IF(t=x,1,0)),x)),False)[0][1]"""))\
  .show(truncate=False)

#+---+----------------------------------------+-----------+
#|id |values                                  |most_common|
#+---+----------------------------------------+-----------+
#|1  |[good, good, good, bad, bad, good, good]|good       |
#|2  |[bad, badd, good, bad,, good, bad]      |bad        |
#+---+----------------------------------------+-----------+

我们也可以使用array_max代替sort_array

from pyspark.sql import functions as F

df\
  .withColumn("most_common", F.expr("""array_max(transform(array_distinct(values),\
                                      x-> array(aggregate(values, 0,(acc,t)->acc+IF(t=x,1,0)),x)))[1]"""))\
  .show(truncate=False)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在字符串列表中查找最频繁的字符串

Scala:在字符串列表中查找最频繁的X字符串

带有字符串列表的列中的文本的 Wordcloud

从字符串列表中获取子字符串

带有字符串的类型提示列表和 mypy 中的字符串列表

字符串列表中的频繁出现的Python列表

在字符串列表中搜索字符串以获取字符串

从带有流的字符串列表中创建映射

获取与美丽列表中的字符串列表中的字符串匹配的HTML href链接

从字符串数组中获取包含指定字符的字符串列表

如何从列中获取唯一的字符串列表?

用正则表达式替换带有python中字符串列表的字符串

获取带有预定义列表的pandas列字符串中匹配单词的计数

获取java / android中带有匹配器的字符串列表

替换字符串列表中的子字符串

从字符串列表中删除字符串项目

从字符串列表中删除空字符串

替换字符串列表中的字符串

字符串列表中的字符串长度python

在字符串列表中对字符串使用Maybe

从字符串列表中删除空字符串

从字符串列表中删除子字符串

如果子字符串在字符串列表中,则返回字符串列表

在R中,如何对字符串列名称中带有“ _”的字符串进行排序

从字符串列表中删除某些字符串作为 pandas.DataFrame 中的列

检查字符串列表中的字符串是否在Pandas DataFrame列中

如何检查字符串列表中的字符串是否在pandas dataframe列中

搜索表中是否有字符串列表中的任何字符串

获取bash中某些字符串之间的字符串列表