【发布时间】:2017-09-28 04:02:27
【问题描述】:
我能够以两种方式对 Deedle DataFrame 的子数据帧进行切片:
a) 使用df.Rows.After 提取行,然后使用Frame.ofRows 重构
b) 使用Frame.filterRows
但是,只写df.[someDate..] 会更简洁,但这会产生错误。请看下面的代码。
通过分割数据帧的连续子集来复制/更新数据帧的最佳方法是什么?
open Deedle
let dates =
[ DateTime(2013,1,1);
DateTime(2013,1,4);
DateTime(2013,1,8) ]
let values = [ 10.0; 20.0; 30.0 ]
let first = Series(dates, values)
let second = Series(dates, List.map (fun x -> x * 5.0) values)
let df1 = Frame(["first"; "second"], [first; second])
let someDate = DateTime(2013,1,5)
let df2 = Frame.ofRows (df1.Rows.After someDate)
// Ok, a one-row DataFrame
let f firstDate (dt: DateTime) (x: ObjectSeries<string>) = (dt > firstDate)
let df3 = Frame.filterRows (f someDate) df1
// Ok, a one-row DataFrame
let df4 = df1.[someDate..]
// error FS0039: The field, constructor or member 'GetSlice' is not defined.
【问题讨论】: