首页 > 解决方案 > pd.cut 非均匀 bin 间隔

问题描述

我有一个这样的数据框:

    a   b
0   0   9
1   1   8
2   2   7
3   3   6
4   4   5
5   5   4
6   6   3
7   7   2
8   8   1
9   9   0
10  10  0
11  11  1
12  12  1

我想用它来根据它的值pd.cut()来分隔a不同子类别中的列。为了做到这一点,有必要获得bins. 看起来我们可以bins使用pd.IntervalIndex.

但是我怎样才能使间隔像: [0], (0,2], (2,4], (4,6], (6,8], (8,10], (10,)

我不知道这是否是表示它的正确方法,但它是:一个只有零[0]的间隔 - 和一个每个值都大于 10 的间隔 -(100,)

标签: pythonpandas

解决方案


没有一个值的区间。为了得到同样的结果,我们可以Inf关闭并开始。

pd.cut(df.a,[-np.Inf, 0,2,4,6,8,10,np.Inf])
0     (-inf, 0.0]
1      (0.0, 2.0]
2      (0.0, 2.0]
3      (2.0, 4.0]
4      (2.0, 4.0]
5      (4.0, 6.0]
6      (4.0, 6.0]
7      (6.0, 8.0]
8      (6.0, 8.0]
9     (8.0, 10.0]
10    (8.0, 10.0]
11    (10.0, inf]
12    (10.0, inf]
Name: a, dtype: category
Categories (7, interval[float64]): [(-inf, 0.0] < (0.0, 2.0] < (2.0, 4.0] < (4.0, 6.0] < (6.0, 8.0] <
                                    (8.0, 10.0] < (10.0, inf]]

推荐阅读