我有一个pandas数据帧df
。
我正在执行一个groupby,然后是一些统计数据。
import numpy
m=3
some_stats=df.groupby('c1')[['v1','v2','v3']].apply(lambda g: np.max(g.iloc[m:-m])-np.min(g.iloc[m:-m]))
如果我使用np.max和np.min,结果如预期那样:
v1 v2 v3
c1
8.0 8 10 8
14.0 11 10 11
20.0 10 7 9
30.0 14 9 8
40.0 12 9 10
48.0 23 56 12
56.0 12 14 8
但是,如果我只是将不同的numpy摘要功能应用为np.percentile
some_stats2=df.groupby('c1')[['v1','v2','v3']].apply(lambda g:np.percentile(g.iloc[m:-m],90)-np.percentile(g.iloc[m:-m],10))
然后我得到一个与之前形状完全不同的数据框。
为什么这是合乎逻辑的,背后的逻辑是什么?
c1
8.0 228.0
14.0 244.0
20.0 345.0
30.0 311.0
40.0 282.0
48.0 333.0
56.0 228.0
dtype: float64
理想情况下,我想获得相同的结果,并理解为什么我使用np.max或np.percentile(,100)
pd.__version__
Out[86]: u'0.20.2'