0

我有一个包含 DateTime 时间戳的两列的 deedle 框架。我想计算两者之间的差异(timaspan)

type Test = { 
    id : int;
    start : DateTime;
    finish : DateTime    }

let testData = [
    {id = 1; start = DateTime.Parse("13.01.2014 00:45:38"); finish = DateTime.Parse("13.01.2014 03:15:39")};
    {id = 2; start = DateTime.Parse("15.01.2014 00:30:38"); finish = DateTime.Parse("16.01.2014 01:07:39")}]

let testFrame = Frame.ofRecords testData

testFrame?TimeSpan <- testFrame |> Frame.mapRowValues (fun row -> 
    row?finish - row?start )
4

1 回答 1

2

使用?运算符 inrow?finish是一种快捷方式,row.GetAs<float>("finish")表示它访问列并尝试将其转换为float- 运算符这样做只是因为这似乎是最常见的情况,所以我们想让它变得简单。

如果您需要使用其他类型,则需要GetAs显式使用:

testFrame?TimeSpan <- testFrame |> Frame.mapRowValues (fun row -> 
    row.GetAs<DateTime>("finish") - row.GetAs<DateTime>("start") )

另请查看此MSDN 文档页面DateTime,该页面讨论了使用和之间的区别,DateTimeOffset以确保您使用正确的类型来表示时间。

于 2014-08-13T11:26:18.133 回答