我有一个名为buy_groups的dict,它存储了一组SessionID,然后我想看到数据帧SesssionData的元素在dict中出现了SessionID。如果它存在,那么我将Buy设置为1.数据框如下
SessionID Buy
1 0
2 0
3 0
例如,如果在dict buy_groups中存在3,那么我设置相关的buy = 1.
我写了一个这样的矢量化版本
SessionData.Buy[SessionData.SessionID.apply(lambda x: buy_groups.has_key(x))== True] = 1
大约需要5秒钟。
相反,迭代需要更短的时间,比如2秒,
for items in keys_value:
if buy_groups.has_key(items)== True:
SessionData.loc[SessionData['SessionID']==items,'Buy'] = 1
如何加速此操作,因为数据帧和字典都非常大。
提前致谢!
答案 0 :(得分:1)
这是我要尝试的。它使用布尔索引方法
rowindex = SessionData['SessionID'].isin(buy_groups)
SessionData[rowindex,'Buy'] = 1