fslaborg / Deedle

Easy to use .NET library for data and time series manipulation and for scientific programming
http://fslab.org/Deedle/
BSD 2-Clause "Simplified" License
924 stars 196 forks source link

ResampleUniform with missing values raises exception #480

Closed zyzhu closed 4 years ago

zyzhu commented 4 years ago

The following test case with missing values failed:

  let input = [
    DateTime(2019,1,1), 1.0
    DateTime(2019,1,3), nan
    DateTime(2019,1,5), 3.0] |> series
  let expected = [
    DateTime(2019,1,1), 1.0
    DateTime(2019,1,2), 1.0
    DateTime(2019,1,3), nan
    DateTime(2019,1,4), nan
    DateTime(2019,1,5), 3.0] |> series
  let actual =
    SeriesExtensions.ResampleUniform(
      input, (fun (dt:DateTime) -> dt.Date), (fun dt -> dt.AddDays(1.0)))
  actual |> shouldEqual expected

Error message

Deedle.MissingValueException: Value at the key 1/3/2019 12:00:00 AM is missing
   at Deedle.Series`2.Get(K key)
   at Deedle.Series`2.get_Item(K a)
   at Deedle.SeriesModule.resampleUniformInto@1549.Invoke(K2 k)
   at Deedle.SeriesModule.FillMissingUsing@1208.Invoke(K k, FSharpOption`1 _arg1)
   at Deedle.SeriesModule.MapAll@472.Invoke(KeyValuePair`2 kvp)
   at <StartupCode$Deedle>.$Series.newVector@415-8.Invoke(IVectorLocation loc, OptionalValue`1 value)
   at <StartupCode$Deedle>.$ArrayVector.data@382-11.Invoke(OptionalValue`1 arg10)
   at <StartupCode$Deedle>.$ArrayVector.data@382-9.Invoke(Int32 i, OptionalValue`1 v)
   at Microsoft.FSharp.Collections.ArrayModule.MapIndexed[T,TResult](FSharpFunc`2 mapping, T[] array)
   at Deedle.Vectors.ArrayVector.ArrayVector`1.Deedle-IVector`1-Select[TNewValue](FSharpFunc`2 f)
   at Deedle.Series`2.SelectOptional[R](Func`2 f)
   at Deedle.SeriesModule.MapAll[K,T,R](FSharpFunc`2 f, Series`2 series)
   at Deedle.SeriesModule.FillMissingUsing[K,T](FSharpFunc`2 f, Series`2 series)
   at Deedle.SeriesModule.resampleUniformInto[K1,K2,V,a](Lookup fillMode, FSharpFunc`2 keyProj, FSharpFunc`2 nextKey, FSharpFunc`2 f, Series`2 series)
   at Deedle.SeriesExtensions.ResampleUniform[K,V,a](Series`2 series, Func`2 keyProj, Func`2 nextKey)
   at <StartupCode$FSI_0005>.$FSI_0005.main@() in C:\FSharp\zyzhu\Deedle\tests\Deedle.Tests\Series.fs:line 559
Stopped due to error