Python 创建一个";“定向”;pct_变化函数

Python 创建一个";“定向”;pct_变化函数,python,pandas,math,percentage,Python,Pandas,Math,Percentage,我想创建一个pct_变化函数,这样前一行中的负数,后一行中的较大负数将导致pct_变化为负数(而不是正数) 我创建了以下函数: ``` ef pct\u变化方向(x): 如果x.shift()大于0.0: 返回x.pct_change()#如果之前的数字大于0,则正常计算 elif x.shift()x.shift: 返回abs(x.pct_change())#为正值 elif x.shift()正如@Wen所说的多个where,不太可能np.选择 mask1 = df[col].shift()

我想创建一个pct_变化函数,这样前一行中的负数,后一行中的较大负数将导致pct_变化为负数(而不是正数)

我创建了以下函数: ```

ef pct\u变化方向(x):
如果x.shift()大于0.0:
返回x.pct_change()#如果之前的数字大于0,则正常计算
elif x.shift()<0.0和x>x.shift:
返回abs(x.pct_change())#为正值

elif x.shift()正如@Wen所说的多个where,不太可能
np.选择

mask1 = df[col].shift() > 0.0
mask2 = ((df[col].shift() < 0.0) & (df[col] > df[col].shift())
mask3 = ((df[col].shift() < 0.0) & (df[col] < df[col].shift())

np.select([mask1, mask2, mask3],
          [df[col].pct_change(), abs(df[col].pct_change()),
           -df[col].pct_change()],
           0)
mask1=df[col].shift()>0.0
mask2=((df[col].shift()<0.0)和(df[col]>df[col].shift())
mask3=((df[col].shift()<0.0)和(df[col]

关于select和where的详细信息,正如@Wen所说的多个where,不太可能
np。select

mask1 = df[col].shift() > 0.0
mask2 = ((df[col].shift() < 0.0) & (df[col] > df[col].shift())
mask3 = ((df[col].shift() < 0.0) & (df[col] < df[col].shift())

np.select([mask1, mask2, mask3],
          [df[col].pct_change(), abs(df[col].pct_change()),
           -df[col].pct_change()],
           0)
mask1=df[col].shift()>0.0
mask2=((df[col].shift()<0.0)和(df[col]>df[col].shift())
mask3=((df[col].shift()<0.0)和(df[col]

关于选择和在哪里可以看到的许多细节可以通过使用多个np来解决。在哪里…如何准确地@Wen?这可以通过使用多个np来解决。在哪里…如何准确地@Wen?