pd.groupby.apply()的逻辑导致基于应用函数的不同形状

时间:2018-02-13 13:26:42

标签: python pandas numpy

我有一个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'

0 个答案:

没有答案