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


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)

我不完全理解…还有别的出路吗?

您需要传递一个映射函数(在本例中是恒等函数)。从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

最新更新