2014-07-23 51 views
1

我是Deedle的新手。在Deedle中汇总数据帧

鉴于这个数据帧

 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列和平均价格。我想类似的输出到目前为止遵循以下

 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 

我的方法:

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:组合向量失败 - 两个向量都有一个值。 在[email protected](数组2 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, IVector 1 []参数)在C:\托马斯\公共\ Deedle \ SRC \ Deedle \载体\ ArrayVector.fs:线198

在Deedle.Frame 2.Join(Frame 2 otherFrame,JoinKind样,查找查找)在C:\托马斯\公用\ Deedle的\ src \ Deedle \ Frame.fs:行272 在$ @ FSI_0059.main()

+0

虽然在C#中有完全相同的问题..你有没有运气来解决这个问题? – user1129988

回答

1

Deedle。如果帧具有相同名称的列,则不能连接它们。

如果你想加入最后2帧,你必须提取不常见的列,并将其添加到另一个。

例如,你可以做到以下几点:

sumCols?price <- avgCols?price 

,你必须在sumCols框架柱的价格。

如果你需要一个更sofisticated加入,你能想到的第一个创建你想坐列的新框架,然后用另一架加入,如下面的例子:

let df2 = Frame.ofColumns ["price" => avgCols?price] 
let df3 = Frame.join JoinKind.Outer sumCols df2 

我希望它可以有用。