Truncate/delete 帧中的前 x 行
Truncate/delete first x rows from a Frame
我有一个 Frame<int, string>
,其中包含一个 OHLCV 数据。我正在计算该框架的技术分析指标,由于前几条记录不准确,因为在一开始就有,我必须删除它们。我该怎么做?
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 中的大多数操作都是根据行键而不是索引来表示的。这背后的想法是,如果你使用 orderedderd 数据,你应该有一些有序的行键。
这意味着基于行键更容易做到这一点。但是,如果你有一个有序的行索引,你可以在某个位置获取一个键,然后用它在 Where
中进行过滤。我会尝试类似的东西:
var firstKey = dataFrame.GetRowKeyAt(50);
var after50 = dataFrame.Where(kvp => kvp.Key > firstKey);
我有一个 Frame<int, string>
,其中包含一个 OHLCV 数据。我正在计算该框架的技术分析指标,由于前几条记录不准确,因为在一开始就有,我必须删除它们。我该怎么做?
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 中的大多数操作都是根据行键而不是索引来表示的。这背后的想法是,如果你使用 orderedderd 数据,你应该有一些有序的行键。
这意味着基于行键更容易做到这一点。但是,如果你有一个有序的行索引,你可以在某个位置获取一个键,然后用它在 Where
中进行过滤。我会尝试类似的东西:
var firstKey = dataFrame.GetRowKeyAt(50);
var after50 = dataFrame.Where(kvp => kvp.Key > firstKey);