首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Deedle中的聚合数据框架

Deedle中的聚合数据框架
EN

Stack Overflow用户
提问于 2014-07-23 15:26:12
回答 1查看 966关注 0票数 2

我是迪德尔的新手。

给定这个数据框架

代码语言:javascript
复制
     date       account custodian ticker qty     pnl price

0 -> 1/1/2013   ACCT #1 CUST#1    AAPL   1000   5000    95
1 -> 1/1/2013   ACCT #1 CUST#2    AAPL    200    400    94
2 -> 1/2/2013   ACCT #1 CUST#1    AAPL    100    300    93

我想聚合列-和数量/ pnl栏和平均价格。我想要一个类似于下面的输出

代码语言:javascript
复制
     date       account ticker qty     pnl price

0 -> 1/1/2013   ACCT #1 AAPL   1200   5400    94.5
1 -> 1/2/2013   ACCT #1 AAPL    100    300    93

到目前为止,我的方法:

代码语言:javascript
复制
let sumCols = df |> Frame.aggregateRowsBy ["date"; "account"; "ticker"] ["pnl"; "qty"] Stats.sum
let avgCols = df |> Frame.aggregateRowsBy ["date"; "account"; "ticker"] ["price"] Stats.mean

我很难加入/合并这两个数据帧。我得到以下错误。

System.InvalidOperationException:组合向量失败-两个向量都有一个值。( at Deedle.VectorHelpers.get_AtMostOne@161-1.Invoke(Tuple2 tupledArg) in c:\Tomas\Public\Deedle\src\Deedle\Vectors\VectorHelpers.fs:line 162 at Deedle.Vectors.ArrayVector.ArrayVectorBuilder.Deedle-Vectors-IVectorBuilder-Build[T](VectorConstruction command, IVector1[]参数)在c:\Tomas\Public\Deedle\src\Deedle\Vectors\ArrayVector.fs:line 198中

在c:\Tomas\Public\Deedle\src\Deedle\Frame.fs:line 272中的Deedle.Frame2.Join(Frame2 otherFrame,JoinKind类别,查找( .$FSI_0059.main@() )

EN

回答 1

Stack Overflow用户

发布于 2014-10-24 16:50:05

如果Deedle框架具有同名列,则无法连接它们。

如果您想要加入最后两个框架,您必须从其中一个提取不常见的列,并将其添加到另一个。

例如,您可以执行以下操作:

代码语言:javascript
复制
sumCols?price <- avgCols?price

sumCols框架中有列价格。

如果您需要一个更柔和的联接,您可以考虑首先从要使用的列创建一个新框架,然后将它与另一个框架连接起来,如下例所示:

代码语言:javascript
复制
let df2 = Frame.ofColumns ["price" => avgCols?price]
let df3 = Frame.join JoinKind.Outer sumCols df2

我希望它能有用。

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

https://stackoverflow.com/questions/24914635

复制
相关文章

相似问题

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