截断/删除Frame中的前x行

  • 本文关键字:删除 Frame 截断 c# deedle
  • 更新时间 :
  • 英文 :


我有一个由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);

最新更新