のサブ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..]