我是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
我想汇总列 - 总和qty / 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:组合向量失败 - 两个向量都有一个值。
在Deedle.VectorHelpers.get_AtMostOne@161-1.Invoke(元组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:\ Tomas \ Public \ Deedle \ src \ Deedle \ Vectors \ ArrayVector.fs:第198行
at Deedle.Frame
2.Join(Frame
2 otherFrame,JoinKind kind,Lookup lookup)在c:\ Tomas \ Public \ Deedle \ src \ Deedle \ Frame.fs:第272行 at。$ FSI_0059.main @()
答案 0 :(得分:1)
如果具有相同名称的列,则无法连接Deedle帧。
如果你想加入最后2帧,你必须从中提取不常用的列并将其添加到另一列。
例如,您可以执行以下操作:
sumCols?price <- avgCols?price
您的列价在sumCols
框架中。
如果您需要更加柔和的连接,您可以考虑首先从要创建的列创建一个新帧,然后将其与另一个帧连接,如下例所示:
let df2 = Frame.ofColumns ["price" => avgCols?price]
let df3 = Frame.join JoinKind.Outer sumCols df2
我希望它有用。