2017-04-30 9 views
1

Iの2つの方法でDeedle DataFrameのサブデータフレームをスライスすることができた:Deedle DataFrameのサブDataFrameをスライスする最適な方法は何ですか?

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. 

答えて

4

あなたがdf1.Rowsまたはdf1.Columnsにスライス表記を使用することができます。それらは、ほとんどのこと(それらにAfterを呼び出すことができるという事実を含む)のためにシリーズとして振る舞いますが、それらをスライスするときに新しいデータフレームを返します。

次はあなたが必要な正確に何をすべき:私がまさに必要

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

。ありがとう。 – Soldalma

関連する問題