将计算值/差除以先前值 - > '坡'

时间:2015-01-17 13:58:05

标签: python pandas dataframe division

我有一个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']不正确。在这种情况下,除以前一行中的值的正确语法是什么?

1 个答案:

答案 0 :(得分:1)

您可以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