np.searchsorted -
df['out'] = np.searchsorted([W1,W2],df.column1)+1
-
In [230]: df = pd.DataFrame(np.random.randint(0,10,(10000)),columns=[['column1']])
In [231]: W1,W2 = 3,6
In [232]: %timeit np.where(df['column1'] <= W1, 1,np.where(df['column1'] <= W2, 2, 3))
1000 loops, best of 3: 633 µs per loop
In [233]: %timeit df.column1.gt(W1).add(1).add(df.column1.gt(W2))
1000 loops, best of 3: 1.07 ms per loop
In [234]: %timeit np.searchsorted([W1,W2],df.column1)+1
1000 loops, best of 3: 205 µs per loop
df.column1.values, np.searchsorted NumPy -
In [235]: %timeit np.searchsorted([W1,W2],df.column1.values)+1
1000 loops, best of 3: 184 µs per loop
source
share