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 :(得分: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