2014-07-23 76 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 

我希望它可以有用。