【发布时间】:2017-04-27 02:45:27
【问题描述】:
我正在使用 graphlab 和 sframes 在 ipython notebook 中构建重复订单报告。我有一个 csv 文件,其中包含大约 100k 行数据,其中包含 user_id、user_email、user_phone。我添加了一个名为唯一标识符的新列。对于每一行,我遍历所有其他行以查看 user_id、user_email 或 user_phone 是否与当前记录匹配。如果唯一标识符不为空且有匹配项,我将当前记录中的user_id 分配到每个匹配记录的唯一标识符槽中。
最后,我得到一个有 4 列的 SFrame,其中 unique_identifier 包含所有匹配订单的最旧订单的 user_id。我通过带有 lambda 函数的 .apply 方法执行此操作。整个过程在我的笔记本电脑上需要几秒钟。但是,在该过程完成后,SFframe 变得非常缓慢且难以管理,以至于 SFrame.save 似乎永远需要花费。
似乎我添加unique_identifier 的过程阻塞了内存或类似的东西。但是,该问题与帧大小无关。如果我将其限制为 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'])
【问题讨论】:
标签: python machine-learning graphlab sframe