【问题标题】:How to get unique pairs of values in DataFrame如何在 DataFrame 中获取唯一的值对
【发布时间】:2018-03-14 12:46:57
【问题描述】:

给定一个 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()

【问题讨论】:

  • 你得到什么错误。?
  • @Suresh:我没有收到任何错误。我只是没有得到唯一的值对,例如<20; 50>, <30,50>。而不是它,我得到列的唯一值,例如20, 50, 30.
  • 试试这个,df.select(['col1','col2']).distinct().rdd.map(lambda r: (r[0],r[1]))。收集()

标签: python python-3.x dataframe pyspark


【解决方案1】:

我试过的那个,

>>> 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)]

【讨论】:

    【解决方案2】:

    试试下面这个函数:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2011-04-06
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      相关资源
      最近更新 更多