/ / Deedle DataFrameのサブDataFrameをスライスするための最良の方法は何ですか? - データフレーム、f#、スライス、ディードル

Deedle DataFrameのサブDataFrameをスライスする最善の方法は何ですか? - データフレーム、f#、スライス、脱落

のサブDataFrameをスライスすることができました Deedle DataFrame 2つの方法で:

a)を使って行を抽出します。 df.Rows.After そしてを使って再構築する Frame.ofRows

b)使用 Frame.filterRows

しかし、それを書くだけではずっとうまくいきません。 df.[someDate..] しかしそれはエラーを発生させます。下記のコードをご覧ください。

行の連続したサブセットをスライスしてDataFrameをコピー/更新するための最良の方法は何ですか?

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.

回答:

回答№1は4

スライシングの構文は df1.Rows または df1.Columns。たとえそれらが(あなたが呼ぶことができるという事実を含めて)ほとんどのことに対してシリーズとして振る舞うとしても After それらに)、スライスを介してそれらを使用するとき、彼らは新しいデータフレームを返します。

以下はまさにあなたが必要とすることをするべきです:

let df4 = df1.Rows.[someDate..]