将计算的 value/difference 除以先前值 -> 'slope'

Divide a calculated value/difference by the prior value -> 'slope'

我有一个 pandas DataFrame df(梯度是新的计算列):

Time Value1 Value2  gradient    
1        20     40       NaN    
2        30    100       0.5    
3        36    150       0.2    
4        18    100      -0.5

现在,我想计算第 y 行与前一行 x 之间的所有差异,除以前一行中的值。

示例:在这种情况下,在新列 df['gradient'] 中,我应该在第 3 行中获取 'value1' : 0.20 --> ((36-30) / 30)

我现在有:

df['gradient'] =  df['Value1'].diff() / df['Value1']

但我知道 / df['Value1'] 不正确。在这种情况下,除以前一行中的值的正确语法是什么?

您可以shift()您划分的列。这会将每个值移动到下一行。例如,如果您的 df 为:

   Value1
0      20
1      30
2      36
3      18

然后可以用除法计算梯度:

>>> df.Value1.diff() / df.Value1.shift()
0    NaN
1    0.5
2    0.2
3   -0.5