这是一个小例子,我想在系列中处理自定义函数的缺失值。
假设我已经获得了一系列
series4;;
val it : Series<int,int opt> =
1 -> 1
2 -> 2
3 -> 3
4 -> <missing>
例如,这样:
let series1 = Series.ofObservations [(1,1);(2,2);(3,3)]
let series2 = Series.ofObservations [(1,2);(2,2);(3,1);(4,4)]
let series3 = series1.Zip(series2,JoinKind.Outer);;
let series4 = series3 |> Series.mapValues fst
然后,如果我这样做,
Series.mapAll (fun v -> match v with
| Some a -> (a>1)
| _-> false) series4
失败
System.Exception:由于之前的原因,操作无法完成 error类型'int选项'与'int opt'类型不匹配。看到 还输入.fsx(4,42) - (4,49)。在4,42
虽然我希望结果是
val it : Series<int,bool opt> =
1 -> false
2 -> true
3 -> true
4 -> false
更好的是能够得到像
这样的结果val it : Series<int,int opt> =
1 -> false
2 -> true
3 -> true
4 -> <missing>
那里的语法是什么?理想情况下,如果有<missing>
值,我希望新系列中相同键的值为<missing>
基本上我需要在int opt
类型
奖金问题:在Deedle中是否存在一些常用运算符的向量化运算符,例如“&gt;” ? (series1&gt; series2)当两个系列具有相同的键类型时,将返回一系列新的布尔值(选项?)类型
感谢
答案 0 :(得分:0)
你可以这样做:
let series5 =
series4
|> Series.mapValues(OptionalValue.map(fun x -> x > 1))
您可以在documentation
中阅读有关模块OptionalValue
的信息