多个数组,PySpark除外



我有一个Spark数据框架:

> numbers_df
+----+-----------+-----------+-----------+-------------------------------------+
| id |      num_1|      num_2|      num_3|                              all_num|
+----+-----------+-----------+-----------+-------------------------------------+
|   1|  [1, 2, 5]|     [4, 7]|     [8, 3]|          [1, 2, 3, 4, 5, 6, 7, 8, 9]|
|   2|   [12, 13]|   [10, 20]|   [15, 17]| [10, 11, 12, 13, 14, 15, 16, 17, 18]|
+----+-----------+-----------+-----------+-------------------------------------+

我需要从num_1num_2num_3列中除去all_num列的值。
预期结果:

<表类>idnum_1num_2num_3all_numexcept_numtbody><<tr>1(1、2、5)(4、7)(8, 3)[1, 2, 3, 4, 5, 6, 7, 8, 9)[6, 9]2(12、13)(10, 16)[15、17](10、11、12、13、14、15、16、17、18)[11、14、18]

可以将array_exceptconcat函数组合使用

df = df.withColumn('except_num', F.array_except('all_num', F.concat('num_1', 'num_2', 'num_3')))
df.show(truncate=False)

相关内容

  • 没有找到相关文章

最新更新