熊猫:取多个数据框的中位数

Pandas: Take the median accross multiple dataframe

这个问题在 on this site 之前被问过,但建议的解决方案对我不起作用。我有多个数据框,所有数据框都具有相同的列和索引,如下所示:

       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

在所有数据帧中,我想取每个 i,j 元素的中位数。

例如,如果我尝试将所有数据帧存储在名为 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().

正确的处理方法是什么?

一种 "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)