Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果列等于表中的值,如何使当前行值等于前一行值?_Python_Pandas_Numpy - Fatal编程技术网

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

Python 如果列等于表中的值,如何使当前行值等于前一行值?,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据帧,如下所示: df ID val 1 0.0 2 yes 3 1.0 4 0.0 5 yes 如果列val等于“yes”,如何将前一个值与当前值匹配 我尝试了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

ID  val
1   0.0
2   yes
3   1.0
4   0.0
5   yes
如果列val等于“yes”,如何将前一个值与当前值匹配

我尝试了
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