如何解决在pyspark中分别比较类型为String和Array <string>的不同数据帧中的两列
有两个DF:
df1:
Word Count
abd 1
abc 2
ad 3
df2:
words,CountSum
[ad,as,abd] 0
[abc,ad] 0
以此类推。
我的主要目标是遍历df2的word列中的每个“值”,并将其与df1的“ word”列相匹配。
如果找到匹配项,则将df1计数添加到df2 CountSum中。
例如以上,
在df2中-[abd,ad]在df1.word中--->因此CountSum = count(ad)+ count(abd)= 4 等等
现在,DF2最终版:
words CountSum
[ad,abd] 4
[abc,ad] 5
到现在为止,我有一个普遍的想法,我需要加入DF并炸毁敌人以得到所需的结果,但由于类型不匹配且列不可重复的错误而困扰不已。
此外,可以使用pyspark中的内置方法来完成此操作,还是必须使用UDF?
谢谢。
解决方法
我会做这样的事情:
from pyspark.sql import functions as F
df2.withColumn("word",F.explode("words")).join(df,how="left",on="word").groupBy(
"words"
).agg(F.sum("count").alias("CountSum")).show()
+-------------+--------+
| words|CountSum|
+-------------+--------+
|[ad,as,abd]| 4|
| [abc,ad]| 5|
+-------------+--------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。