Deedle 系列索引超出范围
Deedle series index out of range
您好,我正在使用以下代码:
let timeser = ser |> Series.sampleTimeInto(TimeSpan(0,5,0)) Direction.Backward Series.lastValue
但是经常出现以下错误; System.IndexOutOfRangeException 附加信息:索引超出数组范围。
有谁知道如何解决这个错误。
很难猜出问题出在哪里,因为我们无法 运行 您的代码。但最明显的异常原因是 Series.lastValue
失败,因为您的一个块中没有数据。
假设您有一个仅包含 2 天值的系列:
let ser = series [ DateTime(2000, 1, 1) => 1.0; DateTime(2000, 1, 2) => 2.0 ]
如果您尝试使用 Series.lastValue
将其采样为 12 小时的块,那么这将失败(因为您获得的块中只有两个实际包含一些值):
// This shows you that some of the chunks are empty
ser |> Series.sampleTime (TimeSpan(12,0,0)) Direction.Backward
// This will fail
ser |> Series.sampleTimeInto(TimeSpan(12,0,0)) Direction.Backward Series.lastValue
您可以通过多种方式处理此问题,但最简单的方法是 return 没有数据的块的缺失值:
ser |> Series.sampleTimeInto(TimeSpan(12,0,0)) Direction.Backward (fun s ->
if s.IsEmpty then nan else Series.lastValue s)
您好,我正在使用以下代码:
let timeser = ser |> Series.sampleTimeInto(TimeSpan(0,5,0)) Direction.Backward Series.lastValue
但是经常出现以下错误; System.IndexOutOfRangeException 附加信息:索引超出数组范围。
有谁知道如何解决这个错误。
很难猜出问题出在哪里,因为我们无法 运行 您的代码。但最明显的异常原因是 Series.lastValue
失败,因为您的一个块中没有数据。
假设您有一个仅包含 2 天值的系列:
let ser = series [ DateTime(2000, 1, 1) => 1.0; DateTime(2000, 1, 2) => 2.0 ]
如果您尝试使用 Series.lastValue
将其采样为 12 小时的块,那么这将失败(因为您获得的块中只有两个实际包含一些值):
// This shows you that some of the chunks are empty
ser |> Series.sampleTime (TimeSpan(12,0,0)) Direction.Backward
// This will fail
ser |> Series.sampleTimeInto(TimeSpan(12,0,0)) Direction.Backward Series.lastValue
您可以通过多种方式处理此问题,但最简单的方法是 return 没有数据的块的缺失值:
ser |> Series.sampleTimeInto(TimeSpan(12,0,0)) Direction.Backward (fun s ->
if s.IsEmpty then nan else Series.lastValue s)