0

複数の行の値の比較に基づいていくつかの行を選択したいと考えています。

データフレーム(df)は次のようになります:

    one two three   four
a   0   1   2   3
b   4   5   6   7
c   8   9   10  11
d   12  13  14  15

col["two"] >= 5 および col["four"] <=11 の行を取得したいと考えています。これは、次のようなパンダを使用してPythonで簡単に実行できます。

df[(df["two"]>=5 & df["four"]<=11]

F# で Deedle を使用してこれを行うにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

Frame.filterRows次の関数を使用できます。

df |> Frame.filterRows (fun k row ->
    row?two >= 5.0 && row?four <= 11.0)

pandas slicing 構文のようなものがあると便利ですが、それを行う完全にスムーズな方法はまだ見つかっていないため、フィルター関数を使用するのが現在の方法です (ただし、良い点は、これが他のフィルター操作と一致することです -リストとシーケンスの場合)。

ここでrow?twoは、データ フレームから数値 (浮動小数点) 値を取得するための簡略化された表記法を使用していGetAs<T>("two")ますが、非数値型の値にも使用できます。

参考までに、サンプル データ セットを次に示します。

let df = 
  Frame.ofRows
    [ 'a' => Series.ofValues [ 0;1;2;3]
      'b' => Series.ofValues [ 4;5;6;7]
      'c' => Series.ofValues [ 8;9;10;11]
      'd' => Series.ofValues [ 12;13;14;15] ]
  |> Frame.indexColsWith ["one"; "two"; "three"; "four"]
于 2013-11-21T02:54:11.170 に答える