我正在使用graphlab和sframe在ipython notebook中构建重复订单报告。我有一个包含大约100k行数据的csv文件,其中包含user_id、user_email、user_phone。我添加了一个名为唯一标识符的新列。对于每一行,我遍历所有其他行,看看user_id、user_email或user_phone是否与当前记录匹配。如果唯一标识符不为空并且存在匹配项,我将当前记录中的user_id赋值到每个匹配记录的unique_identifier槽中。
最后,我得到了一个包含4列的SFrame,其中unique_identifier包含所有匹配订单的最旧订单的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'])发布于 2018-04-23 03:06:36
不要在整个sframe上使用apply,而是在SArray上使用它,这应该会稍微快一点
https://stackoverflow.com/questions/41097396
复制相似问题