f# - 有没有更好的方法来查找 Deedle 系列中缺失值的第一个键?

标签 f# missing-data deedle

我需要找到 Deedle 系列中第一个缺失值的关键。我能够编写下面的函数,这似乎有效。我想知道 Deedle 是否有更好的方法,更一般地说,是一个快速函数,可以返回所有缺失(或非缺失)值的键。

let firstMissing (s: Series<'a,_>) = 
let e = (s.Keys).GetEnumerator()

let rec loop () =
    if e.MoveNext() then
        if s |> Series.has e.Current then loop ()
        else e.Current |> Some
    else None

loop ()

let s2 = Series.ofOptionalObservations [ 1 => Some(1.0); 2 => None ]
// val it : Series<int,float> =
  series [ 1 => 1; 2 => <missing>]
firstMissing s2
val it : int option = Some 2

let s4 = Series.ofValues [1..4]
firstMissing s4
val it : int option = None

最佳答案

我认为除了扫描键直到找到没有值的键之外,没有任何主要不同的选项,但是您可以使用返回一个值的 Series.observationsAll 做得更好键序列,与可选值配对:

s2 |> Series.observationsAll |> Seq.tryPick (function (k, None) -> Some k | _ -> None)

如果所有键都有值,则返回 None,否则返回 Some k 第一个键没有值。

关于f# - 有没有更好的方法来查找 Deedle 系列中缺失值的第一个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085038/

相关文章:

r - 指定不同类型的缺失值 (NA)

dataframe - 如何在 FSI 中将 Deedle DataFrame 显示为漂亮的表格?

f# - 重命名 Deedle 数据框列的直接功能方法

f# - 从 F# 库访问 Windows 命名空间

reflection - 我将如何发出受歧视的联盟?

日期范围的 F# 生成器?

r 从缺失值上方的单元格中复制值

f# - 如何在计算表达式中使用自定义操作从构建器访问值

r - 聚类标准错误和缺失值

c# - 在 Deedle 中选择特定行