2016-10-16 3 views
0

У меня такая проблема: мне нужно, чтобы удалить строки, имеющие в столбце А уникальные значения из dataframeУдалить из dataframe уникальных строк

В примере ниже в строке DF1 0 и 3 должны быть удалены

 A  B  C 
0  5 100  5 
1  1 200  5 
2  1 150  4 
3  3 500  5 

Единственное решение, которое я думал до сих пор это:

  1. GroupBy (А)
  2. подсчета строк в каждой группе
  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», как «левый» донжон. Он сохраняет записи блока данных 1, если ключ также существует в df_t.

+0

спасибо большое! вы прокомментировали мне помощь! – feechka

Смежные вопросы