微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从框架中截断/删除前 x 行

如何解决从框架中截断/删除前 x 行

我有一个由 OHLCV 数据组成的 Frame<int,string>。我正在计算该框架的技术分析指标,由于最初的几条记录并不准确,因此我必须删除它们。我该怎么做?

public override Frame<int,string> PopulateIndicators(Frame<int,string> dataFrame)
{
    var candles = dataFrame.Rows.Select(kvp => new Candle
    {
        Timestamp = kvp.Value.GetAs<DateTime>("Timestamp"),Open = kvp.Value.GetAs<decimal>("Open"),High = kvp.Value.GetAs<decimal>("High"),Low = kvp.Value.GetAs<decimal>("Low"),Close = kvp.Value.GetAs<decimal>("Close"),Volume = kvp.Value.GetAs<decimal>("Volume")
    }).Observations.Select(e => e.Value).ToList<IOhlcv>();
    
    // Todo: Truncate/remove the first 50 rows
    
    dataFrame.AddColumn("Rsi",candles.Rsi(14));
}

解决方法

Deedle 中的大多数操作都是用行键而不是索引来表示的。这背后的想法是,如果您使用有序数据,您应该有一些有序的行键。

这意味着基于行键更容易做到这一点。但是,如果您有一个有序的行索引,则可以在某个位置获取一个键,然后将其用于 Where 中的过滤。我会尝试类似的东西:

var firstKey = dataFrame.GetRowKeyAt(50);
var after50 = dataFrame.Where(kvp => kvp.Key > firstKey);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。