2024-09-28 16:59:08 发布
网友
在PineScript中,有一个名为valuewhen的函数,当条件为真时,该函数返回源的第n个最近出现值。例如,当条件为真时,索引为零将返回最近的值,索引为1将返回第二个最近的值
valuewhen
如何在Series上使用Python中的Pandas实现这一点?PineScript中的函数签名为valuewhen(condition, source, occurrence) → series[float]
Series
valuewhen(condition, source, occurrence) → series[float]
要实现此功能,首先使用reindex和条件作为掩码删除不需要的值。接下来,根据期望出现的情况移动序列。然后,使用重新索引添加从掩码和第一次重新索引中删除的索引值。这些索引值将指向np.nan。最后,使用ffill()将填充值转发到np.nan值上
np.nan
ffill()
这假设occurrences是一个有界的非负数,source是一个有序序列,condition通过它们的index与源相关
occurrences
source
condition
index
这可以用Python编写,如下所示:
def valuewhen(condition, source, occurrence): return source \ .reindex(condition[condition].index) \ .shift(-occurrence) \ .reindex(source.index) \ .ffill()
要实现此功能,首先使用reindex和条件作为掩码删除不需要的值。接下来,根据期望出现的情况移动序列。然后,使用重新索引添加从掩码和第一次重新索引中删除的索引值。这些索引值将指向
np.nan
。最后,使用ffill()
将填充值转发到np.nan
值上这假设
occurrences
是一个有界的非负数,source
是一个有序序列,condition
通过它们的index
与源相关这可以用Python编写,如下所示:
相关问题 更多 >
编程相关推荐