在 F# 中过滤行
Filtering Rows in F#
我有一个代码,其中有以下框架和过滤器行,如下所示:
let dfff=
[ "year" => series [ 1 => 1990.0; 2 => 1991.00; 3 => 1992.0; 4 => 1993.0]
"gold" => series [ 1 => 10.0; 2 => 10.00; 3 => 15.0; 4 => 20.0]
"silver" => series [ 1 => 20.0; 2 => 30.00; 3 => 45.0; 4 => 55.0] ]
|> frame
let dfff2 = dfff |> Frame.filterRows (fun key row -> row?year <= 1992.0 )
为什么我要写key
Frame.filterRows (fun key row -> row?year <= 1992.0)
如果我的函数只依赖于行? key在这里扮演什么角色?如果有人能向我解释逻辑,我将不胜感激。谢谢!
在 Deedle 中,帧有行键和列键。在你的例子中,你有 Frame<int, string>
意味着行键是整数(只是数字)而列键是字符串(列名) - 但你可能还有日期或其他更有趣的东西作为行键。
filterRows
函数为您提供行键和行数据。 key
参数只是行键 - 在您的情况下,这是(无趣的)int 索引,但它可能是例如在其他情况下有用的日期。
F# 允许您编写 _
以显式忽略值:
let dfff2 = dfff |> Frame.filterRows (fun _ row -> row?year <= 1992.0 )
在 Series
模块中,我们有 Series.filter
和 Series.filterValues
,其中第一个为您提供键和值,第二个为您提供值。因此,我们可以遵循相同的模式并添加 Frame.filterRowValues
.
这实际上很容易,所以如果您想做出贡献,请发送一个拉取请求并在某处进行更改 around here :-)。
我有一个代码,其中有以下框架和过滤器行,如下所示:
let dfff=
[ "year" => series [ 1 => 1990.0; 2 => 1991.00; 3 => 1992.0; 4 => 1993.0]
"gold" => series [ 1 => 10.0; 2 => 10.00; 3 => 15.0; 4 => 20.0]
"silver" => series [ 1 => 20.0; 2 => 30.00; 3 => 45.0; 4 => 55.0] ]
|> frame
let dfff2 = dfff |> Frame.filterRows (fun key row -> row?year <= 1992.0 )
为什么我要写key
Frame.filterRows (fun key row -> row?year <= 1992.0)
如果我的函数只依赖于行? key在这里扮演什么角色?如果有人能向我解释逻辑,我将不胜感激。谢谢!
在 Deedle 中,帧有行键和列键。在你的例子中,你有 Frame<int, string>
意味着行键是整数(只是数字)而列键是字符串(列名) - 但你可能还有日期或其他更有趣的东西作为行键。
filterRows
函数为您提供行键和行数据。 key
参数只是行键 - 在您的情况下,这是(无趣的)int 索引,但它可能是例如在其他情况下有用的日期。
F# 允许您编写 _
以显式忽略值:
let dfff2 = dfff |> Frame.filterRows (fun _ row -> row?year <= 1992.0 )
在 Series
模块中,我们有 Series.filter
和 Series.filterValues
,其中第一个为您提供键和值,第二个为您提供值。因此,我们可以遵循相同的模式并添加 Frame.filterRowValues
.
这实际上很容易,所以如果您想做出贡献,请发送一个拉取请求并在某处进行更改 around here :-)。