首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >F# Deedle和多索引

F# Deedle和多索引
EN

Stack Overflow用户
提问于 2018-08-16 11:23:26
回答 1查看 220关注 0票数 1

我最近开始学习数据科学的F# (来自简单的C#和Python语言)。我开始习惯于科学的functional first范式的力量。

然而,我仍然对如何处理一个我可以在Python中使用pandas轻松解决的问题感到困惑。它与多指标时间序列/数据帧相关。我在Deedle上进行了广泛的检查,但我仍然不确定Deedle是否可以帮助我实现这样一个表:

代码语言:javascript
复制
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#中帮助一个新手(但却深爱着他)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-18 00:01:06

在Deedle中,您可以通过使用元组作为键来创建具有分层索引的帧或序列:

代码语言:javascript
复制
let ts = 
  series
   [ ("A", "A1", "p1") => 0.5 
     ("A", "A1", "p2") => 2.
     ("A", "A2", "p3") => 2. 
     ("A", "A2", "p4") => 0.5 ]

Deedle对此确实有一些特殊的处理。例如,它将数据输出为:

代码语言:javascript
复制
A A1 p1 -> 0.5 
     p2 -> 2   
  A2 p3 -> 2   
     p4 -> 0.5 

要对层次结构的一部分应用聚合,可以使用applyLevel函数:

代码语言:javascript
复制
ts |> Series.applyLevel (fun (l1, l2, l3) -> l1) Stats.mean
ts |> Series.applyLevel (fun (l1, l2, l3) -> l1, l2) Stats.mean

第一个参数是一个函数,它获取键的元组并选择要分组的级别部分-因此,上面两个参数分别在顶级和顶级两个级别上创建聚合。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51869172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档