有没有办法加快 pandas getitem、getitem_axis 和 get_label 的速度?

Pie*_*uis 5 python loops pandas

我有下面的循环,但无法使用assign或矢量化它,因为我正在进一步修改多个对象和函数。然而,pandas 选择占用了大部分执行时间。有办法绕过这个吗?

if date in data[instrument].index:   
    row = data[instrument].ix[date] 
Run Code Online (Sandbox Code Playgroud)
  • nb 调用 tottime percall cumtime
  • 34124 0.04444 1.302e-06 7.085 0.0002076 索引.py:108(_getitem)

  • 34124 0.08395 2.46e-06 7.029 0.000206 索引.py:1044(_getitem_axis)

  • 34124 0.0316 9.26e-07 6.242 0.0001829 索引.py:123(_get_label)
  • 34124 0.258 7.56e-06 6.207 0.0001819 通用.py:1827(xs)

编辑:事实证明,这dict.__getitem__比上述使用 pandas 的方法要快得多。因此,我可以用这样的方法来转换所有内容:

dict[(date, instrument)] = pd.Series.to_dict(data[instrument].ix[date]). 
Run Code Online (Sandbox Code Playgroud)

我只需要设置一次,我将多次重复使用的其余代码现在速度提高了大约 54 倍。