在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().
正确的方法是什么?
答案 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)