2017-10-28 10 views
1

で重複行を削除します。私はdtで重複を削除し、sale_id == 196行を維持する必要がありパイソン/パンダ - 私はこのようなデータフレーム持っている列の値

 sale_id   dt  receipts_qty 
31  196.0 2017-02-19    95.0  
32  203.0 2017-02-20    101.0 
33  196.0 2017-02-21    105.0    
34  196.0 2017-02-22    112.0   
35  196.0 2017-02-23    118.0   
36  196.0 2017-02-24    135.0    
37  196.0 2017-02-25    135.0   
38  196.0 2017-02-26    124.0   
40  203.0 2017-02-27    290.0   
39  196.0 2017-02-27    84.0   
42  203.0 2017-02-28    330.0    
41  196.0 2017-02-28    124.0   
43  196.0 2017-03-01    100.0   
44  203.0 2017-03-01    361.0   

を。私はdrop_duplicates('dt', keep='last')drop_duplicates('dt', keep='first')しか見つけられませんでしたが、私が必要とするものではありません。私が取得したい

DATAFRAME:

 sale_id   dt  receipts_qty 
31  196.0 2017-02-19    95.0 
32  203.0 2017-02-20    101.0  
33  196.0 2017-02-21    105.0    
34  196.0 2017-02-22    112.0   
35  196.0 2017-02-23    118.0   
36  196.0 2017-02-24    135.0    
37  196.0 2017-02-25    135.0   
38  196.0 2017-02-26    124.0     
39  196.0 2017-02-27    84.0      
41  196.0 2017-02-28    124.0   
43  196.0 2017-03-01    100.0   

答えて

0

sort_valuesdrop_duplicates、その後、条件によって最初の最初の値のためのヘルパー列を作成します。

print (df) 
    sale_id   dt receipts_qty 
31 196.0 2017-02-19   95.0 
32 203.0 2017-02-20   101.0 
33 196.0 2017-02-21   105.0 
34 196.0 2017-02-22   112.0 
35 196.0 2017-02-23   118.0 
36 196.0 2017-02-24   135.0 
37 196.0 2017-02-25   135.0 
38 196.0 2017-02-26   124.0 
40 203.0 2017-02-27   290.0 
39 196.0 2017-02-27   84.0 
42 103.0 2017-02-28   330.0 <-changed data, value < 196 
41 196.0 2017-02-28   124.0 
43 196.0 2017-03-01   100.0 
44 203.0 2017-03-01   361.0 

#get only values > 196 
df['a'] = (df.sale_id == 196).astype(int) 
#sorting by new column, remove duplicates, remove helper column 
df['a'] = (df.sale_id == 196).astype(int) 
df = (df.sort_values(['a','dt'], ascending=[False, True]) 
     .drop_duplicates('dt') 
     .drop('a', axis=1) 
     .sort_index()) 
print (df) 
    sale_id   dt receipts_qty 
31 196.0 2017-02-19   95.0 
32 203.0 2017-02-20   101.0 
33 196.0 2017-02-21   105.0 
34 196.0 2017-02-22   112.0 
35 196.0 2017-02-23   118.0 
36 196.0 2017-02-24   135.0 
37 196.0 2017-02-25   135.0 
38 196.0 2017-02-26   124.0 
39 196.0 2017-02-27   84.0 
41 196.0 2017-02-28   124.0 
43 196.0 2017-03-01   100.0 
: -

最終洗浄は、カラムasort_indexを削除します