F# 将嵌套字典转换为Deedle框架
嵌套字典包含以下数据:{names,{dates,prices} 结构是这样的:F# 将嵌套字典转换为Deedle框架,f#,deedle,F#,Deedle,嵌套字典包含以下数据:{names,{dates,prices} 结构是这样的: type Dict<'T, 'U> = System.Collections.Generic.Dictionary<'T, 'U> let masterDict = Dict<string, Dict<Datetime, float>> () 我正在尝试将上面的数据完全连接到一个Deedle框架中,如下所示: Corn Future Wh
type Dict<'T, 'U> = System.Collections.Generic.Dictionary<'T, 'U>
let masterDict = Dict<string, Dict<Datetime, float>> ()
我正在尝试将上面的数据完全连接到一个Deedle框架中,如下所示:
Corn Future Wheat Future
2009-09-01 316.69 214.4
2009-09-02 316.09 223.86
2009-09-03 316.33 234.11
2009-09-04 NaN 224.62 // in case a point is not available
迪德尔的技术对我来说还是陌生的。任何帮助都将不胜感激。不确定您将加入什么,但您可以转换:
let frame =
masterDict
|> Seq.map(fun kv -> kv.Key, kv.Value
|> Seq.map(fun nkv -> nkv.Key, nkv.Value)
|> Series.ofObservations)
|> Frame.ofColumns
frame.Format() |> printfn "%s"
然后你得到:
Corn Future Wheat Future
01.09.2009 0:00:00 -> 316,69 214,4
02.09.2009 0:00:00 -> 316,09 223,86
03.09.2009 0:00:00 -> 316,33 234,11
04.09.2009 0:00:00 -> <missing> 224,62
玉米未来小麦未来
01.09.2009 0:00:00 -> 316,69 214,4
02.09.2009 0:00:00 -> 316,09 223,86
03.09.2009 0:00:00 -> 316,33 234,11
04.09.2009 0:00:00 -> 224,62
不确定要加入什么,但您可以转换:
let frame =
masterDict
|> Seq.map(fun kv -> kv.Key, kv.Value
|> Seq.map(fun nkv -> nkv.Key, nkv.Value)
|> Series.ofObservations)
|> Frame.ofColumns
frame.Format() |> printfn "%s"
然后你得到:
Corn Future Wheat Future
01.09.2009 0:00:00 -> 316,69 214,4
02.09.2009 0:00:00 -> 316,09 223,86
03.09.2009 0:00:00 -> 316,33 234,11
04.09.2009 0:00:00 -> <missing> 224,62
玉米未来小麦未来
01.09.2009 0:00:00 -> 316,69 214,4
02.09.2009 0:00:00 -> 316,09 223,86
03.09.2009 0:00:00 -> 316,33 234,11
04.09.2009 0:00:00 -> 224,62
Deedle库中有一些扩展方法(主要是为了使它对C#也很友好),它们使用的是KeyValuePair
,而不是元组(这是F#的默认值)
因此,您应该能够简化Foggy Finder发布的答案(假设顶部有open Deedle
):
Deedle库中有一些扩展方法(主要是为了使它对C#也很友好),它们使用
KeyValuePair
,而不是元组(这是F#的默认值)
因此,您应该能够简化Foggy Finder发布的答案(假设顶部有open Deedle
):
我写了答案,但对我来说似乎有点难看。您需要使用别名(Dict)?您有机会展示如何填写masterDict吗?我只是认为这样做比较容易。正如Foggy所说,您可以使用
dict
功能创建字典。不需要类型别名。我将切换到使用dict,但我不知道还有什么更好的方法。以上词典是查询彭博api的结果。我把C#示例翻译成F#。我写了答案,但对我来说,它似乎有点难看。您需要使用别名(Dict)?您有机会展示如何填写masterDict吗?我只是认为这样做比较容易。正如Foggy所说,您可以使用dict
功能创建字典。不需要类型别名。我将切换到使用dict,但我不知道还有什么更好的方法。以上词典是查询彭博api的结果。我把C的例子翻译成F。