过滤PySpark中出现值的次数

时间:2017-07-29 23:49:12

标签: python pyspark databricks

我有一个包含ID的列的文件。通常,ID只出现一次,但有时候,它们与多个记录相关联。我想计算给定ID出现的次数,然后分成两个单独的dfs,这样我就可以对它们进行不同的操作。一个df应该是ID只出现一次的地方,一个应该是ID出现多次的地方。

通过对ID进行分组并将计数重新加入原始df,我能够成功计算ID出现的实例数,如下所示:

newdf = df.join(df.groupBy('ID').count(),on='ID')

这很好用,因为我得到了这样的输出:

ID      Thing  count
287099  Foo     3
287099  Bar     3
287099  Foobar  3
321244  Barbar  1
333032  Barfoo  2
333032  Foofoo  2

但是,现在我想分割df,以便我有一个df,其中count = 1,并且count> 1.然而,以下及其变体并不起作用:

singular = df2.filter(df2.count == 1)

我得到一个' TypeError:条件应该是字符串或列'而是错误。当我尝试显示列的类型时,它表示count列是一个实例。我怎样才能让PySpark按照我需要的方式处理count列?

1 个答案:

答案 0 :(得分:2)

count是dataframe的一种方法,

>>> df2.count
<bound method DataFrame.count of DataFrame[id: bigint, count: bigint]>

如果过滤器需要操作列,请按如下所示进行更改,

singular = df2.filter(df2['count'] == 1)