python - Python 2.7 - 将一个系列拆分为具有相同数量项目的间隔(类似于 pandas.cut())
问题描述
我有以下系列:
0 79.0
1 220.0
2 185.0
3 199.0
4 226.0
5 141.0
6 341.0
7 151.0
8 57.0
9 313.0
10 273.0
11 113.0
12 328.0
如果我使用pandas.cut()
它,这就是我得到的:
series equal_intvls
0 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
但没有成功,我还访问了这个网站上的其他一些帖子,这些帖子与我想要的类似,但似乎不适合我的情况。请帮忙。
获得这些间隔的最佳方法是什么?
非常感谢您提前
解决方案
我认为您正在寻找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]]
推荐阅读
- c# - Get requests in WCF without method name
- email - 使用自定义表单在产品页面上以编程方式发送电子邮件和创建订单
- python - Pandas Multiindex Series Processing
- javascript - 开玩笑,如何比较两个不同格式的字符串?
- mysql - Generate SQL query for one-to-many relation
- excel - String vs column - percent match
- javascript - Google 地图代码不适用于我的文件,但可以在其他地方使用
- javascript - How to make a 'Select' component as required in Material UI (React JS)
- mysql - 在 mysql 中查询 emoji 让我很困惑,mysql 已经配置了 utf8mb4
- javascript - Display emoji object to text field or textarea in React