Pyspark 如何计算列表列中字符串的出现次数?

Pyspark 如何计算列表列中字符串的出现次数?,pyspark,Pyspark,我有一个包含两列的数据框:角色\技能。(技能分为一个列表) 我希望在每项技能中找出前10项最常见的技能。 我如何制作一个数据框来显示这些技能的计数? (其中第一行可能是4G:123…等) 我希望完成的第二件事是检查不同角色之间的重叠技能 因此,我真正想要的是一个表格,其中第一列是完整的技能范围,第二列用于统计技能,第三列用于显示一个列表,该列表将显示具有该技能的不同角色 我试图让这项工作持续几个小时,但目前没有效果。您可以分解技能阵列并重新组合。试试这个 import pyspark.sql.f

我有一个包含两列的数据框:角色\技能。(技能分为一个列表)

我希望在每项技能中找出前10项最常见的技能。 我如何制作一个数据框来显示这些技能的计数? (其中第一行可能是4G:123…等)

我希望完成的第二件事是检查不同角色之间的重叠技能

因此,我真正想要的是一个表格,其中第一列是完整的技能范围,第二列用于统计技能,第三列用于显示一个列表,该列表将显示具有该技能的不同角色


我试图让这项工作持续几个小时,但目前没有效果。

您可以分解技能阵列并重新组合。试试这个

import pyspark.sql.functions as F
test = spark.createDataFrame([('TL',['python','java']),('PM',['PMP','python']),('TM',['python','java','c'])],schema=['role','skill'])
test_exp = test.select('role',F.explode('skill').alias('skill'))
test_res = test_exp.groupby('skill').agg(F.count('role').alias('skill_count'),F.collect_set('role').alias('roles_associated'))


test_res.show()
+------+-----------+----------------+
| skill|skill_count|roles_associated|
+------+-----------+----------------+
|python|          3|    [PM, TL, TM]|
|     c|          1|            [TM]|
|  java|          2|        [TL, TM]|
|   PMP|          1|            [PM]|
+------+-----------+----------------+

您是否可以分享您尝试过的内容,并添加代码以重现样本数据和预期输出?并且避免添加图片,而是直接添加样本数据以获得未来的精彩答案,感谢您添加
createDataFrame
片段。您应该切换到
spark.createDataFrame
;)@权力-谢谢你的提示。。这是一种习惯的力量:-)你现在改正了吗