2016-10-16 4 views
0

を削除します。私は、カラムに以下DF1行0と3の例ではデータフレーム私はこのような問題を有するデータフレーム一意の行から

から一意の値が

 A  B  C 
0  5 100  5 
1  1 200  5 
2  1 150  4 
3  3 500  5 
を除去すべきた行を削除する必要があります

私は思ったまで一つの解決策は、今では次のとおりです。

  1. GROUPBY(A)各グループの
  2. count行
  3. フィルタアウトカウント> 1
  4. DF2
  5. DF1.intersect(DF2)

任意の他のアイデアにつながる保存しますか? RDDのソリューションも役立ちますが、DataFrameの方が良いでしょう ありがとう!

答えて

1

より凝縮構文(しかし、同じアプローチ以下):

df=sqlContext.createDataFrame([[5,100,5],[1,200,5],[1,150,4],[3,500,5]],['A','B','C']) 
df.registerTempTable('df') # Making SQL queries possible 
df_t=sqlContext.sql('select A,count(B) from df group by A having count(B)=1') # step 1 to 4 in 1 statement 
df2=df.join(df_t,df.A==df_t.A,'leftsemi') # only keep records that have a matching key 

一部の人々は、「左キープ」などの「leftsemi」を参照してください。キーがdf_tにも存在する場合、データフレーム1のレコードを保持します。

+0

ありがとう!あなたは私を助けてくれた! – feechka

関連する問題