2017-09-03 10 views
1

スニペット:パンダなぜpd.cut()負の値を生成しない

test = pd.DataFrame({'counts':[0,1,2,3,4,5,6,11,12,14,15]}) 
test['range'] = pd.cut(test.counts, [0,5,10,15], include_lowest=True) 
test 

出力:?

counts range 
0 0 (-0.001, 5.0] 
1 1 (-0.001, 5.0] 
2 2 (-0.001, 5.0] 
3 3 (-0.001, 5.0] 
4 4 (-0.001, 5.0] 
5 5 (-0.001, 5.0] 
6 6 (5.0, 10.0] 
7 11 (10.0, 15.0] 
8 12 (10.0, 15.0] 
9 14 (10.0, 15.0] 
10 15 (10.0, 15.0] 

が、私はなぜ-0.001私はdidnの場合でも、最大を示してい(0, 5.0]の代わり(-0.001, 5.0]を得ることができますそれを指定しないでください?

答えて

2

これはthe result of include_lowest=True internal logicです。

あなたはときinclude_lowest=Falsepd.cuts()はそれをしないのと同じ方法で、独自でラベルを生成することができます

In [50]: import pandas.core.algorithms as algos 

In [51]: labels = pd.Categorical(pd.core.reshape.tile._format_labels(algos.unique(bins), precision=0), 
           ordered=True) 

In [52]: labels 
Out[52]: 
[(0, 5], (5, 10], (10, 15]] 
Categories (3, interval[int64]): [(0, 5] < (5, 10] < (10, 15]] 

In [53]: test['range'] = pd.cut(test.counts, [0,5,10,15], 
           labels=labels, 
           include_lowest=True) 

In [54]: test 
Out[54]: 
    counts  range 
0  0 (0, 5] 
1  1 (0, 5] 
2  2 (0, 5] 
3  3 (0, 5] 
4  4 (0, 5] 
5  5 (0, 5] 
6  6 (5, 10] 
7  11 (10, 15] 
8  12 (10, 15] 
9  14 (10, 15] 
10  15 (10, 15] 
+0

を私はビン= [0,5,10,15] 'あなたのコードに示されていないされている'前提としています。 – Cheng

+0

@Cheng、はい、申し訳ありません。 :) – MaxU

関連する問題