如何仅在 pandas 中查看 select 个案例的前一行值

how to look back values of previous row for select cases only in pandas

我的数据如下所示。

   col_1  col_2
      1        1
      1        1
      p        0
      1        1
      n        2
      n        2
      p        0
      p        0

我想从 col_1 计算 col_2 中的值。我要应用的逻辑是:当 col_1 值 ='p' 时,用前一行的值 col_2 和 [=25= 中的其他值替换 col_2 中的值] 不会因 col_1 的任何其他值而改变,最终预期输出如下:

   col_1  col_2
      1        1
      1        1
      p        **1**
      1        1
      n        2
      n        2
      p        **2**
      p        **2**

我正在根据 assign() 函数中的日期计算这些列以及其他列。这是我无法弄清楚的唯一步骤。因为在这一行中,我正在查看上一行的值;所以 shift() 可以工作,但我只需要在 col_1 ='p' 时查找 col_2 的先前值。 目前我是通过 for 循环来做的,这让我可以灵活地回顾 1 行和 check/replace 值。由于 for 循环,这不是一个有效的解决方案。

您知道如何避免 for 循环并以更多 pandas 方式进行吗?

您可以使用 mask 然后 ffill:

df['col_2'] = df['col_2'].mask(df['col_1']=='p').ffill()