我最近开始学习数据科学的F# (来自简单的C#和Python语言)。我开始习惯于科学的functional first范式的力量。
然而,我仍然对如何处理一个我可以在Python中使用pandas轻松解决的问题感到困惑。它与多指标时间序列/数据帧相关。我在Deedle上进行了广泛的检查,但我仍然不确定Deedle是否可以帮助我实现这样一个表:
Column Index 1: A || B
Column Index 2: A1 A2 || B1 B2
Column Index 3: p1 p2 | p1 p2 || p1 p2 | p1 p2
Row Index:
date1 0.5 2. | 2. 0.5 || 3. 0. | 2. 3.
date2 ......当Index1 =A等时,能够对所有p1级数求和的想法
我没有找到使用Deedle做这种事情的例子。
如果它不可用,你会推荐我的数据结构是什么?
感谢您在F#中帮助一个新手(但却深爱着他)
发布于 2018-08-18 00:01:06
在Deedle中,您可以通过使用元组作为键来创建具有分层索引的帧或序列:
let ts =
series
[ ("A", "A1", "p1") => 0.5
("A", "A1", "p2") => 2.
("A", "A2", "p3") => 2.
("A", "A2", "p4") => 0.5 ]Deedle对此确实有一些特殊的处理。例如,它将数据输出为:
A A1 p1 -> 0.5
p2 -> 2
A2 p3 -> 2
p4 -> 0.5 要对层次结构的一部分应用聚合,可以使用applyLevel函数:
ts |> Series.applyLevel (fun (l1, l2, l3) -> l1) Stats.mean
ts |> Series.applyLevel (fun (l1, l2, l3) -> l1, l2) Stats.mean第一个参数是一个函数,它获取键的元组并选择要分组的级别部分-因此,上面两个参数分别在顶级和顶级两个级别上创建聚合。
https://stackoverflow.com/questions/51869172
复制相似问题