在这种情况下如何加速熊猫(查询字典)?

时间:2015-02-11 03:48:24

标签: python dictionary pandas dataframe

我有一个名为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 

如何加速此操作,因为数据帧和字典都非常大。

提前致谢!

1 个答案:

答案 0 :(得分:1)

编辑:Per Andy Hayden建议,我将buy_groups.keys()更改为buy_groups以避免不必要的列表转换。

这是我要尝试的。它使用布尔索引方法

rowindex = SessionData['SessionID'].isin(buy_groups)    
SessionData[rowindex,'Buy'] = 1