熊猫:在多个数据框架中取中位数

时间:2015-01-03 14:00:46

标签: python pandas

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().

正确的方法是什么?

1 个答案:

答案 0 :(得分: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)