如何获取与pandas系列中的条件匹配的最后第n项(来自PineScript的valuewhen)

2024-09-28 16:59:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在PineScript中,有一个名为valuewhen的函数,当条件为真时,该函数返回源的第n个最近出现值。例如,当条件为真时,索引为零将返回最近的值,索引为1将返回第二个最近的值

如何在Series上使用Python中的Pandas实现这一点?PineScript中的函数签名为valuewhen(condition, source, occurrence) → series[float]


Tags: 函数sourcepandasfloatcondition条件seriesoccurrence
1条回答
网友
1楼 · 发布于 2024-09-28 16:59:08

要实现此功能,首先使用reindex和条件作为掩码删除不需要的值。接下来,根据期望出现的情况移动序列。然后,使用重新索引添加从掩码和第一次重新索引中删除的索引值。这些索引值将指向np.nan。最后,使用ffill()将填充值转发到np.nan值上

这假设occurrences是一个有界的非负数,source是一个有序序列,condition通过它们的index与源相关

这可以用Python编写,如下所示:

def valuewhen(condition, source, occurrence):
    return source \
        .reindex(condition[condition].index) \
        .shift(-occurrence) \
        .reindex(source.index) \
        .ffill()

相关问题 更多 >