Deedle series.ValuesAll raise Error:OptionalValue.Value:值不可用

时间:2016-01-27 11:22:24

标签: f# deedle

根据doco的Deedle系列的ValuesAll函数是

Returns a collection of values, including possibly missing values. Note that the length of this sequence matches the `Keys` sequence.

但是,以下代码将引发错误OptionalValue.Value:不可用。这是预期的行为吗?我期待ValuesAll可以返回double.nan

#I "..\..\packages\Deedle.1.2.4"
#load "Deedle.fsx"
open System
open System.Globalization
open System.Collections.Generic
open Deedle

let ts = [DateTime.Now.Date => Double.NaN; DateTime.Now.Date.AddDays(1.0) => 1.0] |> series
ts.Print()
ts.ValuesAll
> 
27/01/16 12:00:00 AM -> <missing> 
28/01/16 12:00:00 AM -> 1         


val ts : Series<DateTime,float> =

27/01/16 12:00:00 AM -> <missing> 
28/01/16 12:00:00 AM -> 1         

val it : seq<float>

> ts.ValuesAll
;;
val it : seq<float> = Error: OptionalValue.Value: Value is not available
> 

1 个答案:

答案 0 :(得分:0)

valuesAll here和C#友好ValuesAll here有不同的实现方式。后者只访问可选值的.Value属性,其签名为seq<float>,而不是seq<float opt>。这里的实现或文档都不一致。

当我使用Deedle时,我使用|> Series.dropMissing过滤了系列作为快速解决方法,当我只需要现值时。