2017-07-22 15 views
1

私は2つの列User_IDとItem_IDを持っています。ここでは、0または1のいずれかの値を含む新しい列「並べ替え」を作成します.0は特定のユーザーが項目を1回だけ注文したとき、1は特定のユーザーが項目を複数回注文したときです。 これは、User_IDをグループ化してからapply関数を使って重複した項目を1としてマッピングし、0と重複しないようにすることで実現できると思いますが、正しいPythonコードを見つけることができません。 誰かがこれを手伝ってくれたら助かります。パンダのgroupbyオブジェクトで重複を見つけてマッピングする

+1

あなた少なくともあなたが書いたコードを共有することができますこれまでのところ ??またはあなたが直面している問題 – warl0ck

答えて

1

パラメータkeep=FalseSeries.duplicatedをすべての複製に使用できます - 出力はTrueFalseです。最終astypeによってint秒に変換します。

df['Reordered'] = df['User_ID'].duplicated(keep=False).astype(int) 

はサンプル:

df = pd.DataFrame({'User_ID':list('aaabaccd'), 
        'Item_ID':list('eetyutyu')}) 

df['Reordered'] = df['User_ID'].duplicated(keep=False).astype(int) 
print (df) 
    Item_ID User_ID Reordered 
0  e  a   1 
1  e  a   1 
2  t  a   1 
3  y  b   0 
4  u  a   1 
5  t  c   1 
6  y  c   1 
7  u  d   0 

それとも、各ユーザごとにチェックduplicatesためDataFrame.duplicatedが必要になります。

df['Reordered'] = df.duplicated(['User_ID','Item_ID'], keep=False).astype(int) 
print (df) 
    Item_ID User_ID Reordered 
0  e  a   1 
1  e  a   1 
2  t  a   0 
3  y  b   0 
4  u  a   0 
5  t  c   0 
6  y  c   0 
7  u  d   0 
+1

私はその2番目と思う – piRSquared

+0

ええ、2番目の私は完璧に動作します。ありがとう@jezrael –

関連する問題