这里有一种使用DataFrame函数的方法。按字母顺序比较两列并赋值,以便
artist1
将始终按字典排序
artist2
. 然后选择不同的行。
import pyspark.sql.functions as f
df.select(
'knownForTitle',
f.when(f.col('artist1') < f.col('artist2'), f.col('artist1')).otherwise(f.col('artist2')).alias('artist1'),
f.when(f.col('artist1') < f.col('artist2'), f.col('artist2')).otherwise(f.col('artist1')).alias('artist2'),
).distinct().show()
#+-------------+----------------+----------------+
#|knownForTitle| artist1| artist2|
#+-------------+----------------+----------------+
#| tt0070735| George Roy Hill| Robert Redford|
#| tt0022958| Joan Crawford|Lionel Barrymore|
#| tt0022958| Joan Crawford| Wallace Beery|
#| tt0022958|Lionel Barrymore| Wallace Beery|
#+-------------+----------------+----------------+