Graphlab と sframes を使用して、ipython ノートブックでリピート注文レポートを作成しています。user_id
、、user_email
を含む約10万行のデータを含むcsvファイルがありますuser_phone
。一意の識別子という新しい列を追加しました。行ごとに、他のすべての行をトラバースして、または現在のレコードと一致するかどうかを確認してuser_id
いuser_email
ますuser_phone
。一意の識別子が空ではなく、一致する場合はuser_id
、現在のレコードから一致する各レコードの unique_identifier スロットに割り当てます。
最後に、一致するすべての注文の最も古い注文をunique_identifier
含む4 つの列を持つ SFrame を取得します。ラムダ関数を使用したメソッドをuser_id
介してこれを行っています。.apply
私のラップトップでは、プロセス全体に数秒かかります。ただし、プロセスが完了すると、SFframe は非常に遅くなり、SFrame.save が永遠にかかるように見えるポイントまで管理できなくなります。
追加のプロセスがunique_identifier
メモリを詰まらせているようです。ただし、問題は sframe サイズとは関係ありません。10 行に制限すると、問題は解決しません。私は何を間違っていますか?
これが私の方法です
def set_unique_identifier():
orders['unique_identifier'] = ''
orders['unique_identifier'] = orders.apply(lambda order:
order['unique_identifier'] if order['unique_identifier'] else
orders[(orders['user_email']==order['user_email']) |
(orders['phone'] == order['user_phone'])][0]['user_id'])