2017-07-29 5 views
0

IDを含む列を持つファイルがあります。通常、IDは1回だけ表示されますが、複数のレコードに関連付けられていることがあります。私は与えられたIDが何回出現したのかを数え、2つの別々のdfsに分割したいので、両方で異なる操作を実行できます。 1つのdfは、IDが一度しか表示されない場所でなければならず、IDが複数回現れる場所でなければなりません。私は出力を得るようPySparkに値が表示される回数のフィルタリング

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

これは、うまく動作:

は、私は正常IDがIDにグループ化すると、オリジナルのDFに戻ってカウントを結ぶので、等によって登場インスタンスの数をカウントすることができました

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

しかし、今、私は私が数= 1、およびcount> 1.下記およびそのバリエーションはしかし、うまくいきませんでしたDF持つようにDFを分割したい:

をそうのような
singular = df2.filter(df2.count == 1) 

代わりに、「TypeError:条件は文字列または列でなければなりません」というエラーが表示されます。列の型を表示しようとすると、count列がインスタンスであると表示されます。カウント・コラムを必要な方法で扱うにはどうしたらいいですか?

答えて

2

カウントは、フィルタがオン動作する列を必要として、データフレームの方法、

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

あり、以下のようにそれを変更し、

singular = df2.filter(df2['count'] == 1) 
関連する問題