为了账号安全,请及时绑定邮箱和手机立即绑定

Python 2.7 - 将系列拆分为具有相同项目数的间隔(与 pandas.cut() 类似)

Python 2.7 - 将系列拆分为具有相同项目数的间隔(与 pandas.cut() 类似)

绝地无双 2021-09-11 18:29:05
我有以下系列:0         79.01        220.02        185.03        199.04        226.05        141.06        341.07        151.08         57.09        313.010       273.011       113.012       328.0如果我使用pandas.cut()它,这就是我得到的:    series  equal_intvls0   79.0    (0.979, 306.1]1   220.0   (0.979, 306.1]2   185.0   (0.979, 306.1]3   199.0   (0.979, 306.1]4   226.0   (0.979, 306.1]5   141.0   (0.979, 306.1]6   341.0   (306.1, 608.2]7   151.0   (0.979, 306.1]8   57.0    (0.979, 306.1]9   313.0   (306.1, 608.2]10  273.0   (0.979, 306.1]11  113.0   (0.979, 306.1]12  328.0   (306.1, 608.2]pandas.cut() 给了我一系列长度相同(最大值 - 最小值)的间隔,间隔的长度是 2,但是从间隔的起点到终点,每个间隔内有几个数字可能不每个间隔都相同。如果我使用pandas.cut()我得到相同长度的区间,但我怎么能把这个系列分成每个区间包含相同数量元素的区间?我想获得的是一个包含这些间隔的新列,其中包含相同数量的元素。以以下数组为例:[1, 7, 7, 4, 6, 3]我想获得的是这一系列具有相同数量项目的间隔:[(0.999, 3.667] ,(3.667, 6.333] , (6.333, 7.0]](0.999, 3.667] - There are 2 values in this imterval: (1, 3)(3.667, 6.333] - There are 2 values in this interval (4, 6)(6.333, 7.0] - And again, 2 values within this interval (7, 7)我想以类似系列的形式获取间隔,以便我可以将其作为新列输入到 y 原始 df 中。我已经尝试过np.split,np.array_split但没有成功,我还访问了本网站上的一些其他帖子,这些帖子与我想要的类似,但似乎并不适合我的情况。请帮忙。获得这些间隔的最佳方法是什么?
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

我认为您正在寻找qcut:


>>> >>> pd.qcut(pd.Series([1, 7, 7, 4, 6, 3]),3)

0    (0.999, 3.667]

1      (6.333, 7.0]

2      (6.333, 7.0]

3    (3.667, 6.333]

4    (3.667, 6.333]

5    (0.999, 3.667]

dtype: category

Categories (3, interval[float64]): [(0.999, 3.667] < (3.667, 6.333] < (6.333, 7.0]]


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号