Python 蟒蛇/熊猫;如何将列的值保留到下一个事件

Python 蟒蛇/熊猫;如何将列的值保留到下一个事件,python,pandas,Python,Pandas,我已经为一个问题挣扎了一段时间,但在其他地方找不到类似的问题。我对Python还很陌生,所以如果这是非常直接的话,我会使用同位语 所以我有一个系列,我把它放到一个大熊猫df中: series_ = [0, 0, 0, 1, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 4, 0, 0] df = pd.DataFrame(series_, columns = ['Values']) 该系列可以有两个“信号值”: 每次序列值为1时,我希望相应的值为“是

我已经为一个问题挣扎了一段时间,但在其他地方找不到类似的问题。我对Python还很陌生,所以如果这是非常直接的话,我会使用同位语

所以我有一个系列,我把它放到一个大熊猫df中:

series_ = [0, 0, 0, 1, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 4, 0, 0]
df = pd.DataFrame(series_, columns = ['Values'])
该系列可以有两个“信号值”: 每次序列值为1时,我希望相应的值为“是” 如果值为4,则应为“否”

当序列不是1或4时,它应复制上一个信号值(“是”或“否”),直到下一个信号值。遗憾的是,我找不到一个公式来填补这些空白

因此,我目前拥有的是我的系列(“值”)和列(“修改”)中这些信号值的转换。我试图找到一个公式,它将得到列('Expected'),这个公式基本上是根据最后一个可用的信号值,用'YES'或'NO'替换'UNDECLARED'值

非常感谢您的帮助

提前谢谢


汤姆

我确信,有更好的方法可以做到这一点,但这里有一个快速而肮脏的解决方案,不确定速度对你是否重要

df['Expected']=df['Values'].replace(0,np.NaN).ffill().replace({1:'NO', 4: 'YES'}).fillna('UNDECLARED')

我确信,有更好的方法可以做到这一点,但这里有一个快速而肮脏的解决方案,不确定速度对你是否重要

df['Expected']=df['Values'].replace(0,np.NaN).ffill().replace({1:'NO', 4: 'YES'}).fillna('UNDECLARED')

或者,您也可以使用
map
df['Values'].map({1:'YES',4:'NO'}).ffill().fillna('UNDECLARED')
:)或者您也可以使用
map
df['Values'].map({1:'YES',4:'NO'}.ffill().fillna('UNDECLARED'))
尝试查找公式
-欢迎使用。这不是一个讨论论坛或教程。请花点时间阅读和阅读该页面上的其他链接。您还没有向我们展示如何从原始数据帧过渡到文章底部的示例。熊猫有。发布图片时要小心:
试图找到公式
-欢迎使用SO。这不是一个讨论论坛或教程。请花点时间阅读和阅读该页面上的其他链接。您还没有向我们展示如何从原始数据帧过渡到文章底部的示例。熊猫有。请注意张贴图像: