【问题标题】:Divide a calculated value/difference by the prior value -> 'slope'将计算值/差异除以先前值 -> 'slope'
【发布时间】:2015-01-17 13:58:05
【问题描述】:

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

【问题讨论】:

  • 要格式化框架,选择行并点击 control-K(或按下带有两个大括号 {} 的编辑框上方的按钮)。

标签: python pandas dataframe division


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2022-11-01
    • 2020-11-17
    相关资源
    最近更新 更多