我是迪德尔的新手。
给定这个数据框架
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:组合向量失败-两个向量都有一个值。( 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.Frame
2.Join(Frame2 otherFrame,JoinKind类别,查找( .$FSI_0059.main@() )
发布于 2014-10-24 16:50:05
如果Deedle框架具有同名列,则无法连接它们。
如果您想要加入最后两个框架,您必须从其中一个提取不常见的列,并将其添加到另一个。
例如,您可以执行以下操作:
sumCols?price <- avgCols?price在sumCols框架中有列价格。
如果您需要一个更柔和的联接,您可以考虑首先从要使用的列创建一个新框架,然后将它与另一个框架连接起来,如下例所示:
let df2 = Frame.ofColumns ["price" => avgCols?price]
let df3 = Frame.join JoinKind.Outer sumCols df2我希望它能有用。
https://stackoverflow.com/questions/24914635
复制相似问题