2012-11-28 37 views
3

我剛剛拿起pandas,認爲它可以使我在python中很好地進行數據分析。現在我有以下形式的pandas數據幀:熊貓:計算所有隻有兩列不同的條目的平均值

pandas.DataFrame({"p1": [1, 1, 2, 2, 3, 3]*2, 
        "p2": [1]*6+[2]*6, 
        "run": [1, 2]*6, 
        "result": xrange(12)}) 

    p1 p2 result run 
0 1 1  0 1 
1 1 1  1 2 
2 2 1  2 1 
3 2 1  3 2 
4 3 1  4 1 
5 3 1  5 2 
6 1 2  6 1 
7 1 2  7 2 
8 2 2  8 1 
9 2 2  9 2 
10 3 2  10 1 
11 3 2  11 2 

我想生成包含每一組參數p1p2,平均爲result所有值的這些參數的一個條目框架,也就是

p1 p2 result 
0 1 1  0.5 
1 2 1  2.5 
2 3 1  4.5 
3 1 2  6.5 
4 2 2  8.5 
5 3 2 10.5 

pandas是什麼方法可以做到這一點?我會嘗試複製原始表格,刪除不同的列(resultrun),重新編制索引,然後再將這兩個事物與新索引合併爲多索引,然後爲該外部多索引級別運行平均方法。那是的方法來做到這一點,如果是的話,我該如何在代碼中正確執行這些索引事情?在一個多指標數據幀

df.groupby(['p1', 'p2']).mean() 

這導致:

+1

這對於人們來說運行/測試這個提供複製/可代碼的代碼來提供DF比必須處理您的帖子) –

+0

例如輸出'df.to_dict()' –

回答

6

您可以使用GROUPBY(我叫你的數據幀DF)。爲了在你的問題中得到佈局,只選擇你想要的列並重置索引:

df.groupby(['p1', 'p2']).mean()['result'].reset_index()