我有一个 Dataframe ,我正在使用pd.qcut创建bin,如下所示:
us_counties['bins'] = pd.qcut(us_counties['economic connectedness'], q=10,precision=2)
这些存储箱包括:
us_counties.bins.cat.categories
IntervalIndex([(0.27999999999999997, 0.58], (0.58, 0.67], (0.67, 0.72], (0.72, 0.76], (0.76, 0.81], (0.81, 0.85], (0.85, 0.9], (0.9, 0.97], (0.97, 1.06], (1.06, 1.36]], dtype='interval[float64, right]')
我想改变他们的格式,使第一个bin〈0.58,中等的0.67-0.72和最后一个〉1.06。
我设法用下面的命令制作了中等格式的文件:
us_counties.bins.cat.categories = [f'{i.left} - {i.right}' for i in us_counties.bins.cat.categories]
我如何更改第一个和最后一个,以便以如下所示的垃圾箱结束:
['<0.58','0.58 - 0.67',....,'0.97 - 1.06','>1.06']
2条答案
按热度按时间vojdkbi01#
您可能无法对
qcut
执行此操作,原因是qcut
将数据点分配到大小相等的存储桶中。以您的方式,这种相等性将无法保持。例如,0.58对于qcut
是包含的,但您希望它是不包含的。因此,您可以创建一个函数和另一个列,并使用apply
函数为每一行分配一个bin。然后,基于新的列,您可以在下一轮中做任何您希望做的事情。如果我正确理解了您的情况,我可能会建议您这样做。mfuanj7w2#
像这样的怎么样?