小编use*_*348的帖子

矢量化前瞻性功能熊猫数据帧

我想在大熊猫的DataFrame(可以被认为是一个系列)上做一个"奇怪的"计算.DataFrame必须被视为时间序列或类似的(元素的顺序很重要).

  • 给定索引[i]的值(值[i])
  • 给出一个步骤(例如1)[整数或实数]
  • 给定乘数rr(例如2)[整数或实数]

向前在元素[I:],并指定为值[I]的一个"类":

  • 如果随后的值达到值[i] - 步骤之前达到值[i] + step*rr的水平,则+1
  • -1如果随后的值达到值[i] +步骤之前达到值[i] - 步骤*rr的水平
  • 在每种其他情况下为0(即,当随后的值触摸值[i] - 步骤然后值[i] +步骤或反之亦然.

我知道这听起来很疯狂.想象一下随机步行+ 1/-1步.像这样的序列:

  • 0,1,2将分配给+1级(它也可以是0,1,0,0,1,1,0,1,1,2)
  • 0,-1,-2将分配给-1类(它也可以是0,-1,0,0,0,-1,-1,-1,-2)
  • 0,+ 1,0,-1或0,-1,0,0,-1,0,1等等将为0级.

我通过定义一个函数解决了它的"经典"(也许不是那么pythonic)方式:

import numpy as np
import pandas as pd

def FindClass(inarr, i=0, step=0.001, rr=2):
    j = 0
    foundClass = None
    while i+j < len(inarr) - 1:
        j += 1
        if inarr[i+j] >= inarr[i] + step:
            direction = 1
            break
        if inarr[i+j] <= inarr[i] - …
Run Code Online (Sandbox Code Playgroud)

python numpy r vectorization pandas

5
推荐指数
1
解决办法
272
查看次数

标签 统计

numpy ×1

pandas ×1

python ×1

r ×1

vectorization ×1