pandasのユニーク値の抽出

pandasでは、ユニークな値を抽出するときは、unique()メソッドを使用すれば良い。

    
    len(sample) # 1000
    len(sample['order_no'].unique()) #892



しかし、これだと複数カラムでユニークになるものを考慮できない。unique()には、複数カラムに対応する機能は存在しない。この場合は、duplicated()を使用します。 例えば、order_noとorder_dayの組み合わせで、ユニークになるとしましょう。

    len(sample_df[~sample_df.duplicated(['order_no', 'order_day'])]) # 950

先ほどより、値が増えましたので、order_noは同じでも、order_dayが異なるものがあるということですね。

重複カラムを削除する場合は、subsetに、str/list/array-likeを渡せば良いです。1つのカラムしか見ない場合はstr、複合カラムの場合は、listなどです。

    sample = sample.drop_duplicates(subset=['order_no', 'order_day'], keep='first')

前回エントリーpandas の mergeでやったように、mergeするときの前処理として、使用します。groupby()経由より良い気がしますね。