J'ai les deux DataFrames suivants :
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"]
Pour chaque ligne de df1, je veux calculer le nombre de fois que tous les mots du tableau apparaissent dans df2.
Par exemple, la première ligne de df1 est la suivante ["hello","world"]
. Maintenant, je veux vérifier que df2 est l'intersection de ["hello","world"]
avec chaque ligne de df2.
| ARRAY | INTERSECTION | LEN(INTERSECTION)|
|["big","world"] |["world"] | 1 |
|["sample","overflow","alice","text","bob"] |[] | 0 |
|["hello","sample"] |["hello"] | 1 |
Maintenant, je veux retourner le sum(len(interesection))
. Au final, je veux que le df1 résultant ressemble à ceci :
résultat df1 :
ARRAY INTERSECTION_TOTAL
| ["hello","world"] | 2 |
| ["stack","overflow"] | 1 |
| ["hello","alice"] | 2 |
| ["sample","text"] | 3 |
Comment puis-je résoudre ce problème ?