2015-01-03 60 views
1

on this site之前詢問過此問題,但建議的解決方案不適合我。我有多個dataframes,都具有相同的列和索引,看起來像下面這樣:熊貓:取多個數據框的中間值

 E   F   H   I 
row                  
CE  17.917153 10.875160 9.970251 12.255511 
CF  9.780500 16.261098 10.021619 9.447307 
CH  12.293967 10.608844 10.870527 17.720458 
CI  9.967815 11.181572 17.550371 10.845565 

在所有dataframes,我想利用每個的中位數I,J元素。

如果我嘗試,例如,存儲我所有的dataframes在字典中被稱爲dict做:

np.median(dict.values(), axis=0) 

的建議here,我得到的錯誤:

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

什麼是正確的方式繼續?

回答

4

「pandy」的方法是創建一個panel。例如:

>>> l = [df1, df2, df3, ...] 
>>> panel = pd.Panel({i: df for i, df in enumerate(l)}) 
>>> panel 
<class 'pandas.core.panel.Panel'> 
Dimensions: 2 (items) x 4 (major_axis) x 4 (minor_axis) 
Items axis: 0 to 1 
Major_axis axis: 0 to 3 
Minor_axis axis: 0 to 3 

我們計算中位數只是做:

panel.median(axis=0) 
+1

哦,太好了!有趣的是,我不知道'panel'函數。 – Plug4

+1

@ Plug4,面板就像2D數據幀的3D集合。我添加了一個鏈接到我的答案。 – elyase