熊猫:取多个数据框的中位数
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)
这个问题在 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)