为什么Panel.groupby()不接受pandas 0.14中的level参数?

时间:2014-07-23 15:30:22

标签: numpy pandas

pn = Panel(randn(4,3,3), items=['a','a','b','b'], major_axis=np.arange(0,3), minor_axis=np.arange(0,3))

我想平均重复的项目。

但是...

pn.groupby(level=0)
TypeError: groupby() got an unexpected keyword argument 'level'

pn.groupby(axis='items')
TypeError: groupby() takes at least 2 arguments (2 given)

我没有完全理解...... 还有另一种出路吗?

1 个答案:

答案 0 :(得分:0)

您需要传递映射函数(在本例中为身份函数)。 从0.14.1开始,之前,Panel.groupby的API与Series / DataFrame.groupby不同(因为它尚未更新)。 0.15.0将解决这个问题。

In [6]: pn = Panel(randn(4,3,3), items=['a','a','b','b'], major_axis=np.arange(0,3), minor_axis=np.arange(0,3))

In [7]: pn
Out[7]: 
<class 'pandas.core.panel.Panel'>
Dimensions: 4 (items) x 3 (major_axis) x 3 (minor_axis)
Items axis: a to b
Major_axis axis: 0 to 2
Minor_axis axis: 0 to 2

为了清晰起见,显示转换为框架

In [10]: pn.to_frame()
Out[10]: 
                    a         a         b         b
major minor                                        
0     0      0.149552  0.149552 -3.750202 -3.750202
      1     -1.354459 -1.354459  0.744473  0.744473
      2     -0.183734 -0.183734  0.081965  0.081965
1     0     -1.946947 -1.946947  0.039065  0.039065
      1     -0.648491 -0.648491 -0.141705 -0.141705
      2     -1.581965 -1.581965 -0.628115 -0.628115
2     0     -1.280040 -1.280040 -0.556467 -0.556467
      1     -0.093943 -0.093943  0.722981  0.722981
      2     -0.207690 -0.207690  0.914684  0.914684

In [11]: pn.groupby(lambda x: x, axis='items').mean().to_frame()
Out[11]: 
                    a         b
major minor                    
0     0      0.733896 -1.814611
      1     -1.021487  0.182690
      2     -0.791080 -0.040136
1     0     -1.141415 -0.445435
      1     -0.678486 -0.395380
      2     -1.504996  0.172791
2     0     -0.405256 -0.999300
      1      0.001912  0.272143
      2     -0.987270  0.154344