首页 > 解决方案 > 如果提取 nan 值,则重复 .shift()

问题描述

我想了解 shift() 返回 nan 值时的作用。

示例 df:

   index a   b
    1    2   3
    2    3   3
    3    nan nan
    4    8   7

如果我输入:

for i in range(2,5)
    df["a"] = np.where((df.index==i), df.b * df.a.shift(1), df.a) 

我猜(但不确定)它会返回:

    index a   b 
      1   2   3 
      2   6   3 
      3   nan nan
      4   8   7 

有没有一种简单的方法可以返回:

     index a   b 
      1    2   3 
      2    6   3 
      3   nan  nan
      4    42  7 

将“a”列第 4 行中的 42 计算为 6*7(“a”列第 2 行乘以“b”列第 4 行)我想要的是,如果使用 shift(1) 提取的值是 nan,则函数取上一行的值,就好像我输入了 shift(2)。如果此单元格中再次出现 nan 值,则应取上面单元格中的值,就好像我键入了 shift(3) 等等。

标签: pythonpandasnumpy

解决方案


推荐阅读