我是 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
我想聚合列 - 总数量/盈亏列和平均价格。我想要类似于下面的输出
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] (Tuple2 tupledArg) 在 c:\Tomas\Public\Deedle\src\Deedle\Vectors\VectorHelpers.fs 中:第 162 行
在 c:\Tomas\Public\Deedle\src\Deedle\Vectors\ArrayVector 中的 Deedle.Vectors.ArrayVector.ArrayVectorBuilder.Deedle-Vectors-IVectorBuilder-Build[T](VectorConstruction 命令,IVector
1[] 参数) .fs:第 198 行
at Deedle.Frame
2.Join(Frame
2 otherFrame, JoinKind kind, Lookup lookup) in c:\Tomas\Public\Deedle\src\Deedle\Frame.fs:line 272 at .$FSI_0059.main@()
最佳答案
如果 Deedle 框架具有相同名称的列,则无法连接它们。
如果您想加入最后 2 帧,您必须从一帧中提取不常见的列并将其添加到另一帧中。
例如,您可以执行以下操作:
sumCols?price <- avgCols?price
并且 sumCols
框架中包含列价格。
如果您需要更复杂的连接,您可以考虑首先从要获取的列创建一个新框架,然后将其与另一个框架连接,如下例所示:
let df2 = Frame.ofColumns ["price" => avgCols?price]
let df3 = Frame.join JoinKind.Outer sumCols df2
希望它有用。
关于deedle - 在 Deedle 中聚合数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914635/