我有一个带有两列包含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 )
答案 0 :(得分:2)
在?
中使用row?finish
运算符是row.GetAs<float>("finish")
的快捷方式,意味着它访问某个列并尝试将其转换为float
- 运算符执行此操作仅仅是因为这似乎是最常见的情况,所以我们想让它变得简单。
如果您需要使用其他类型,则需要明确使用GetAs
:
testFrame?TimeSpan <- testFrame |> Frame.mapRowValues (fun row ->
row.GetAs<DateTime>("finish") - row.GetAs<DateTime>("start") )
另请查看此MSDN documentation page,其中讨论了使用DateTime
和DateTimeOffset
之间的区别,以确保您使用正确的类型来表示时间。