F# deedle 将 Series<string, obj> 转换为 Series<string, float>?
F# deedle transform Series<string, obj> to Series<string, float>?
如果我通过使用 .Rows.[rowIndex]
操作得到 row
的 Frame
,Deedle
将 return 我得到 Object Series
。有时我知道这只包含 float
。如何在拍摄中将所有 obj
转换为 float
系列?
Deedle 系列是通用的,所以理想情况下应该可以立即获得浮动系列。但是由于不清楚得到一系列对象的原因,您仍然可以通过映射适当的类型转换函数将值转换为浮点数:
#load @"..\packages\Deedle.1.2.4\Deedle.fsx"
open Deedle
open System
// Let's prepare a sample series
let keys = ["1";"2";"3"]
let values = [1.1 :> Object;1.2 :> Object;1.3 :> Object]
let series = Series(keys, values)
// Now apply the map taking the Series<string,System.Object> series to Series<string,float>
series |> Series.map (fun _ v -> v :?> float)
// as @Foggy Finder pointed out, there is a convenience function to only map values
series |> Series.mapValues (fun v -> v :?> float)
// Alternatively, use the tryMap function that takes the Series<int,Object> series
// to Series<int,TryValue<float>>
series |> Series.tryMap (fun _ v -> v :?> float)
Series.map
函数的类型是(('a -> 'b -> 'c) -> Series<'a,'b> -> Series<'a,'c>) when 'a : equality
。这意味着映射函数的第一个参数是我们使用下划线忽略的键,因为它不需要进行类型转换。正如 Foggy Finder 指出的那样,有一个隐藏键的便捷功能 Series.mapValues
。
如果我通过使用 .Rows.[rowIndex]
操作得到 row
的 Frame
,Deedle
将 return 我得到 Object Series
。有时我知道这只包含 float
。如何在拍摄中将所有 obj
转换为 float
系列?
Deedle 系列是通用的,所以理想情况下应该可以立即获得浮动系列。但是由于不清楚得到一系列对象的原因,您仍然可以通过映射适当的类型转换函数将值转换为浮点数:
#load @"..\packages\Deedle.1.2.4\Deedle.fsx"
open Deedle
open System
// Let's prepare a sample series
let keys = ["1";"2";"3"]
let values = [1.1 :> Object;1.2 :> Object;1.3 :> Object]
let series = Series(keys, values)
// Now apply the map taking the Series<string,System.Object> series to Series<string,float>
series |> Series.map (fun _ v -> v :?> float)
// as @Foggy Finder pointed out, there is a convenience function to only map values
series |> Series.mapValues (fun v -> v :?> float)
// Alternatively, use the tryMap function that takes the Series<int,Object> series
// to Series<int,TryValue<float>>
series |> Series.tryMap (fun _ v -> v :?> float)
Series.map
函数的类型是(('a -> 'b -> 'c) -> Series<'a,'b> -> Series<'a,'c>) when 'a : equality
。这意味着映射函数的第一个参数是我们使用下划线忽略的键,因为它不需要进行类型转换。正如 Foggy Finder 指出的那样,有一个隐藏键的便捷功能 Series.mapValues
。