我想根据多行的值比较选择一些行。
说数据框(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]
如何使用Deedle在F#中执行此操作?
谢谢!
答案 0 :(得分:2)
您可以使用Frame.filterRows
功能:
df |> Frame.filterRows (fun k row ->
row?two >= 5.0 && row?four <= 11.0)
像pandas切片语法这样的东西会很好,但是我们还没有找到完全平滑的方法,所以使用filter函数是当前的方法(但好的是这与其他过滤操作 - 用于列表和序列。)
在这里,我使用的是row?two
,它是从数据框中获取数值(浮点)值的简化表示法,但您可以将GetAs<T>("two")
用于非数字类型的值。< / p>
仅供参考,这是我的样本数据集:
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"]