python - 您如何获得与熊猫系列中的条件匹配的最后第 n 个项目(来自 PineScript 的 valuewhen)
问题描述
在 PineScript 中有一个函数调用valuewhen
,当条件为真时返回源的第 n 个最近出现的值。因此,例如,当条件为真时,索引为零将返回最近的值,而索引为 1 将返回第二近的值。
你如何在 Python 中使用 Pandas 来做到这一点Series
?PineScript 中的函数签名是valuewhen(condition, source, occurrence) → series[float]
解决方案
要实现此功能,首先使用 reindex 和条件作为掩码删除不需要的值。接下来,根据需要发生的事件来移动系列。然后,使用 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()
推荐阅读
- python - 如何在稀疏矩阵上执行 <= 和 >=?
- json.net - 使用 JSON.Net 解析数组的属性
- c - 第一个字符串中有多少个数字在不同位置的其他字符串中
- c++ - 如何在 Qt 中检索“网络适配器”的“设备描述”
- javascript - 为什么 PHP json_encode 会扁平化数组?
- c# - 参照类创建方法
- json - 在 Swift 3 中解析 JSON (CLLocationCoordinate2D)
- javafx-8 - 在 fxml 中使用 ArrayList 时出错
- vb.net - 粘贴到 RichTextBox 结果重复粘贴
- javascript - 重构依赖于正在定义的父对象的 switch 语句