gpt4 book ai didi

python - 如何将间隔添加到分组结果中

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:25 25 4
gpt4 key购买 nike

我需要按地点价格的区间对数据进行分组(步长为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

最佳答案

我想你需要aggregate + cut :

但如果相同的输出需要其他类别 - 添加 5。不理想,但列已转换为 int 并使用 mask添加了 5,然后转换为 categorical

bins = range(0, df['price'].max() + 5, 5)
labels_low = range(0, df['price'].max(), 5)

df2['price_min'] = pd.cut(df2['price_min'], bins=bins, labels=labels_low)
df2['price_max'] = pd.cut(df2['price_max'], bins=bins, labels=labels_low).astype(int)
mask = df2['price_min'] == df2['price_max']
df2['price_max'] = df2['price_max'].mask(mask, df2['price_max'] + 5).astype('category')

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

没有分类的解决方案:

df2['price_min'] = pd.cut(df2['price_min'], bins=bins, labels=labels_low).astype(int)
df2['price_max'] = pd.cut(df2['price_max'], bins=bins, labels=labels_low).astype(int)
mask = df2['price_min'] == df2['price_max']
df2['price_max'] = df2['price_max'].mask(mask, df2['price_max'] + 5)
print (df2)
year_ place_ level_median price_min price_max
0 1990 BBB 0 75 80
1 1991 BBB 1 90 95
2 1993 BBB 1 85 90
3 1994 AAA 1 85 90
4 1998 AAA 3 90 95

关于python - 如何将间隔添加到分组结果中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43835661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com