如果一列等于Pandas中的值,如何使当前行值等于前一行值



我有一个数据帧如下:

df
ID  val
1   0.0
2   yes
3   1.0
4   0.0
5   yes

如果列val等于"0",我如何将前一个值与当前值匹配;是";

我试过df['val'] = df['val'].replace('yes', np.nan).bfill().astype(str),但无法按要求工作。

期望输出

ID  val
1   yes
2   yes
3   1.0
4   yes
5   yes

我们可以把np.where和bfill一起用吗?怎么做?

怎么样:

df.loc[df['val'].shift(-1).eq('yes'), 'val'] = 'yes'

输出:

ID  val
0   1  yes
1   2  yes
2   3  1.0
3   4  yes
4   5  yes

最新更新