我需要按year
,place
和price
的间隔(步长为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_min
和price_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
答案 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