熊猫Groupby计数

时间:2019-11-21 12:11:34

标签: python pandas pandas-groupby

我有一个数据框,如下(尾部10):

> store_id  period_id   sales_volume    t   unique_period   q4
> 809838    38126884    242 1.3485     1.0   211447000      1
> 643854    38126899    240 2.9500    777.0  211448500      1
> 227299    38126899    242 6.2000    777.0  211450000      1
> 731859    38126908    240 2.2000    777.0  211451500      1
> 687269    38126908    241 2.6000     1.0   211451500      1
> 512944    38126926    241 3.9500    777.0  211453000      1
> 832513    38126935    240 0.9500    777.0  211454500      1
> 417892    38126935    242 4.6500    777.0  211456000      1
> 354468    38126938    241 5.1000    777.0  211457500      1
> 604276    38126938    242 3.2765     1.0   211457500      1

我创建了一个groupby对象:

mc[['store_id', 'unique_period']].groupby(['store_id','unique_period']).count()

结果为:

store_id    unique_period
4168621     1000
            2500
            4000
            5500
            7000
            8500
4168624     10000
4168636     11500
            13000
            14500

但是我需要在每个组中计算“唯一时间”,例如:

第4168621组-6条记录, 4168624组-1条记录 等等。

之后,需要对该系列计算MEDIAN。

我被困住了。由于GROUPBY没有值,只是GroupBY索引。

1 个答案:

答案 0 :(得分:3)

DataFrameGroupBy.nuniquemedian一起使用:

a = mc.groupby('store_id')['unique_period'].nunique()
print (a)
store_id
38126884    1
38126899    2
38126908    1
38126926    1
38126935    2
38126938    1
Name: unique_period, dtype: int64

a = mc.groupby('store_id')['unique_period'].nunique().median()
print (a)
1.0

编辑:

如果需要计算唯一值和中位数:

a = mc.groupby('store_id')['unique_period'].agg(['nunique','median'])
print (a)
          nunique     median
store_id                    
38126884        1  211447000
38126899        2  211449250
38126908        1  211451500
38126926        1  211453000
38126935        2  211455250
38126938        1  211457500