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