如何在DataFrame中获取唯一的值对

时间:2017-10-03 10:35:56

标签: python python-3.x dataframe pyspark

给定pySpark DataFrame,我如何获得列col1col2的所有可能的唯一组合。

我可以为单个列获取唯一值,但无法获得col1col2的唯一值:

df.select('col1').distinct().rdd.map(lambda r: r[0]).collect()

我尝试了这个,但它似乎不起作用:

df.select(['col1','col2']).distinct().rdd.map(lambda r: r[0]).collect()

2 个答案:

答案 0 :(得分:2)

我试过的那个,

>>> df = spark.createDataFrame([(1,2),(1,3),(1,2),(2,3)],['col1','col2'])
>>> df.show()
+----+----+
|col1|col2|
+----+----+
|   1|   2|
|   1|   3|
|   1|   2|
|   2|   3|
+----+----+

>>> df.select('col1','col2').distinct().rdd.map(lambda r:r[0]).collect() ## your mapping
[1, 2, 1]
>>> df.select('col1','col2').distinct().show()
+----+----+
|col1|col2|
+----+----+
|   1|   3|
|   2|   3|
|   1|   2|
+----+----+
>>> df.select('col1','col2').distinct().rdd.map(lambda r:(r[0],r[1])).collect() 
[(1, 3), (2, 3), (1, 2)]

答案 1 :(得分:0)

尝试使用以下功能:

    `df[['col1', 'col2']].drop_duplicates()`