如何在分组结果中添加间隔

时间:2017-05-07 19:21:44

标签: python pandas

我需要按yearplaceprice的间隔(步长为5 )对数据进行分组。对于每个组,我想估计中位数level

df = 
year   place   price   level
1994   AAA     90      1
1993   BBB     89      1
1994   AAA     91      2
1998   AAA     92      3
1990   BBB     80      0
1994   AAA     90      1
1990   BBB     81      0
1991   BBB     92      1

我可以对数据进行分组并计算level的中间值,但我不知道如何添加price的间隔:

grouped_df = df.groupby(["year","place"]).agg({'level':'median'}).reset_index()

正确的grouped_df应按如下方式构建(数字可能不同,它只是数据结构的一个示例):

grouped_df = 

year   place   price_min   price_max   level
1990   AAA     80          85          1
...

更新

最终结果应该是这样的。所以,基本上price_minprice_max是下限和上限,各自:

   year_ place_  level_median price_min price_max
0   1990    BBB             0  75       80
1   1991    BBB             1  80       85
2   1993    BBB             1  85       90
3   1994    AAA             1  85       90
4   1998    AAA             3  90       95

1 个答案:

答案 0 :(得分:2)

我认为如果您希望价格分组在5的范围内,我会使用pd.cut创建范围然后分组。

ViewPager

输出:

df.groupby(['year','place',pd.cut(df.price,[79,86,91,96,101],labels=['80-85','86-90','91-95','96-100'])]).agg({'price':['min','max'],'level':'median'})

我们试试这个:

                 price      level
                   min max median
year place price                 
1990 BBB   80-85    80  81      0
1991 BBB   91-95    92  92      1
1993 BBB   86-90    89  89      1
1994 AAA   86-90    90  91      1
1998 AAA   91-95    92  92      3