前提
pandasの初心者です。
今回、質問するにあたって使用するデータフレームは以下です。
Python
1import pandas as pd 2 3df1 = pd.DataFrame( 4 data={'user_id': [1,2,3,3,4,4], 5 'contents_id': [11,12,11,13,14,15], 6 'rating': [3,3,4,4,3,4]} 7) 8df2 = pd.DataFrame( 9 data={'user_id': [5,5,5], 10 'contents_id': [11,12,13], 11 } 12) 13df2['rating'] = ""
実現したいこと
前提で示したデータフレームを使って、df1とdf2を結合したいと考えております。
結合する際に、「df2の”contents_id”のみを残して、df1にdf2のuser_idを追加」を条件として結合したいです。
結果としては、以下のように出力されることを想定しています。
user_id | contents_id | rating |
---|---|---|
1 | 11 | 3 |
3 | 11 | 4 |
5 | 11 | |
2 | 12 | 3 |
5 | 12 | |
3 | 13 | 4 |
5 | 13 |
<達成したい項目>
・contents_idが、df2のものしか存在しない。
・user_idに、df2の「5」が追加されている。
該当のソースコード
Python
1cols = ['user_id', 'contents_id', 'rating'] 2new_df = pd.DataFrame(index=[], columns=cols) 3 4for i in df2['contents_id']: 5 for j in df1['contents_id']: 6 if i == j: 7 e1 = df1[df1['contents_id'] == j] 8 e2 = df2[df2['contents_id'] == i] 9 new_df = new_df.append(e1) 10 new_df = new_df.append(e2)
試したこと
該当のソースコードのように、無理やりforで回して一致したら新たなデータフレームに追加という荒業を行いました。
が、テストデータでなく本データですると凄く時間がかかってしまったりするので、結合方法でなにか賢い方法がないかと質問させていただきました。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/05 13:33