将计算的 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
我有一个 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