1

我有一个代码,其中有以下框架和过滤器行,如下所示:

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 )

为什么我必须写密钥

Frame.filterRows (fun key row  -> row?year <= 1992.0)

如果我的功能只取决于行?键在这里起什么作用?如果有人能解释我的逻辑,我将不胜感激。谢谢!

4

1 回答 1

3

在 Deedle 中,帧具有行键和列键。在您的情况下,您的Frame<int, string>意思是行键是整数(只是数字),列键是字符串(列名) - 但您可能还有日期或其他更有趣的东西作为行键。

filterRows函数为您提供行键和行数据。该key参数只是行键-在您的情况下,这是(无趣的) int 索引,但在其他情况下它可能是有用的日期。

F# 允许您写入_以显式忽略该值:

let dfff2 = dfff |> Frame.filterRows (fun _ row  -> row?year <= 1992.0 )

Series模块中,我们有Series.filterSeries.filterValues一个为您提供关键和价值的地方,而第二个为您提供的只是价值。因此,我们可以遵循相同的模式并添加Frame.filterRowValues.

这实际上很容易,所以如果你想贡献,请在此处发送一个带有更改的拉取请求:-)。

于 2015-04-25T00:51:09.370 回答