pd.cut 非均匀分箱间隔

4

I have a dataframe like this:

    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。使用pd.IntervalIndex可以手动设置bins

但是如何创建以下间隔: [0],(0,2],(2,4],(4,6],(6,8],(8,10],(10,)

我不知道这是否是正确的表示方式,但是这里有一个只有零的区间-[0]和一个所有大于10的值的区间- (100,)

1个回答

2

不存在只有一个值的区间。为了获得相同的结果,我们可以使用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]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接