为什么Frame.tryValues在这个简单的例子中失败了?

时间:2017-03-21 20:49:04

标签: f# deedle

Frame.tryValues的帮助包含以下内容:

“给定包含tryval<'T>类型列的数据框,返回包含类型'T的基础值的新数据框。”

我将此解释为意味着函数将从值中删除类型tryval并返回这些剥离的值。也许我不理解文本,因为在以下情况下函数失败:

let dates  = 
  [ DateTime(2013,1,1); 
    DateTime(2013,1,2); 
    DateTime(2013,1,3) ]

let values = [ 10.0; 20.0; 30.0 ]

let first = Series(dates, values)

let frame = Frame(["first"], [first])

let f (dt: DateTime) (row: ObjectSeries<string>) = row.Get("first") :?> double

let s =
    frame
    |> Frame.tryMapRows f

// frame1's second column has tryvalues
let frame1 = Frame(["first"; "second"], [first; s])
// frame2 has no tryvalues
let frame2 = Frame(["first"; "second"], [first; first])

let frame3 =
    frame1
    |> Frame.tryValues
// fails

let frame3 =
    frame2
    |> Frame.tryValues
// Ok, works fine

为什么第一次调用Frame.tryValues失败但第二次调用失败?

1 个答案:

答案 0 :(得分:4)

这是Deedle中的一个错误。我调查了它并submitted a PR with a fix