<p>这基本上是一个装箱操作。因为这里可以使用这两种工具。</p>
<p>使用<a href="https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.searchsorted.html" rel="nofollow noreferrer">^{<cd1>}</a>-</p>
<pre><code>bins = np.arange(50,100,10)
df['SleepQualityGroup'] = bins.searchsorted(df.SleepQuality)
</code></pre>
<p>使用<a href="https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.digitize.html" rel="nofollow noreferrer">^{<cd2>}</a>-</p>
^{pr2}$
<p>样本输出-</p>
<pre><code>In [866]: df
Out[866]:
SleepQuality SleepQualityGroup
0 80.4 4
1 90.1 5
2 66.4 2
3 50.3 1
4 86.2 4
5 75.4 3
6 45.7 0
7 91.5 5
8 61.3 2
9 54.0 1
10 58.2 1
</code></pre>
<p>运行时测试-</p>
<pre><code>In [921]: df
Out[921]:
SleepQuality SleepQualityGroup
0 80.4 4
1 90.1 5
2 66.4 2
3 50.3 1
4 86.2 4
5 75.4 3
6 45.7 0
7 91.5 5
8 61.3 2
9 54.0 1
10 58.2 1
In [922]: df = pd.concat([df]*10000,axis=0)
# @Dark's soln using pd.cut
In [923]: %timeit df['new'] = pd.cut(df['SleepQuality'],bins=[0,50 , 60, 70 , 80 , 90,100], labels=[0,1,2,3,4,5])
1000 loops, best of 3: 1.04 ms per loop
In [926]: %timeit df['SleepQualityGroup'] = bins.searchsorted(df.SleepQuality)
1000 loops, best of 3: 591 µs per loop
In [927]: %timeit df['SleepQualityGroup'] = np.digitize(df.SleepQuality, bins)
1000 loops, best of 3: 538 µs per loop
</code></pre>