2017-06-23 2 views
0

私は(と呼ばれる:データ)のデータフレームを持っているに追加し、顧客とその購入のリストを持っている - 次のようになります。効率的にパンダDATAFRAMEに特定の値と一致する行をチェックし、別のデータフレーム

ID product 1 orange 1 banana 2 apple 2 orange 2 banana 3 banana 3 apple 4 apple 5 apple 5 orange 5 banana 私は希望そうするためには、索引がcostumersのidsであり、列が製品である行列を生成し、costumerが製品を購入した場合は1を、そうでない場合は0を行列に入力します。最後の行列は次のようになります。

enter image description here

私はそれを行っているが、それは私が3,000以上の製品で約2万のcostumersを扱っていて(完了する推定時間は約4である時間がかかりすぎました日々!)。ここで

は私のコードです:

df_matrix = pd.DataFrame(index = customers, columns = products) 
for indx in df_matrix.index: 
    for col in df_matrix.columns: 
     if ((data['ID'] == indx) & (data['product'] == col)).any() == True: 
      df_matrix.loc[indx,col] = 1 

答えて

3

pd.get_dummies私の友人

はこちらをご覧 `.groupby( 'ID')に続い https://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html

+1

を持っている任意の()' –

+0

@noobieを。ありがとうが、私はそれが行の数は、顧客の数ではなく、最初のデータフレームの行の数に等しいです。 – goodX

+0

@ maarten-fabr%c3%a9 'ID'でエラーが発生しました – goodX

関連する問題