将列表与pyspark列中的每个元素进行比较

2024-09-21 05:45:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表minhash_sig=['112','223'],我想找出这个列表和pyspark数据帧列中每个元素之间的jaccard相似性。不幸的是,我不能这样做

我尝试使用array\u intersect和array\u union来进行比较。但是,当我得到消息Resolved attribute missing时,这不起作用

这是我迄今为止创建的pyspark数据框架

df = spark.createDataFrame(
    [
        (1, ['112','333']), 
        (2, ['112','223'])
    ],
    ["id", "minhash"]  # add your column names here
)
minhash_sig = ['112', '223']
df2 = spark.createDataFrame([Row(c1=minhash_sig)])

这是我用来比较列表和pyspark列元素的代码

df.withColumn('minhash_sim',size(array_intersect(df2.c1, df.minhash)))

有人知道我如何在没有这个错误的情况下进行比较吗


Tags: 数据元素df列表相似性arraysparkpyspark
1条回答
网友
1楼 · 发布于 2024-09-21 05:45:24

df1将不知道df2中的列,除非您连接它们并创建一个对象,您可以尝试先交叉连接这两个列,然后尝试代码:

df.crossJoin(df2).withColumn('minhash_sim',size(array_intersect("c1", "minhash")))\
  .show()

+ -+     +     +     -+
| id|   minhash|        c1|minhash_sim|
+ -+     +     +     -+
|  1|[112, 333]|[112, 223]|          1|
|  2|[112, 223]|[112, 223]|          2|
+ -+     +     +     -+

相关问题 更多 >

    热门问题