1
を取得するには、別のデータフレームにおける配列値を1つのデータフレームに配列の値を比較Iは、次の2つのデータフレームを持っている:PySpark:交差点
l1 = [(['hello','world'],), (['stack','overflow'],), (['hello', 'alice'],), (['sample', 'text'],)]
df1 = spark.createDataFrame(l1)
l2 = [(['big','world'],), (['sample','overflow', 'alice', 'text', 'bob'],), (['hello', 'sample'],)]
df2 = spark.createDataFrame(l2)
がDF1:
["hello","world"]
["stack","overflow"]
["hello","alice"]
["sample","text"]
DF2:
["big","world"]
["sample","overflow","alice","text","bob"]
["hello", "sample"]
df1のすべての行について、配列内のすべての単語がdf2で出現する回数を計算したい。
たとえば、df1の最初の行は["hello","world"]
です。ここでは、["hello","world"]
とdf2のすべての行との交差点についてdf2をチェックしたいと思います。
| ARRAY | INTERSECTION | LEN(INTERSECTION)|
|["big","world"] |["world"] | 1 |
|["sample","overflow","alice","text","bob"] |[] | 0 |
|["hello","sample"] |["hello"] | 1 |
ここでは、sum(len(interesection))
を返信します。最終的に私は結果DF1は次のようになりたい:
DF1結果:
ARRAY INTERSECTION_TOTAL
| ["hello","world"] | 2 |
| ["stack","overflow"] | 1 |
| ["hello","alice"] | 2 |
| ["sample","text"] | 3 |
がどのように私はこの問題を解決するのですか?