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 中使用 pandas 完成,例如:

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 切片语法的东西会很好,但我们还没有找到完全平滑的方法,所以使用 filter 函数是当前的方法(但好处是这与其他过滤器操作一致 -对于列表和序列)。

在这里,我使用row?twowhich 是从数据框中获取数字(浮点)值的简化表示法,但您可以将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 回答