繁体   English   中英

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

[英]How to make current row value equal to previous row value if a column equals a value in Pandas?

我有一个如下的数据框:

df

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

如果列 val 等于“是”,我如何将前一个值与当前值匹配

我试过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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM