numpy.where vs pandas.Series.map - PullRequest
       0

numpy.where vs pandas.Series.map

0 голосов
/ 03 октября 2018

Я хотел бы знать по этим двум способам, какой из них мне следует использовать ... или есть еще лучший способ?

df = pd.DataFrame({'values' : [1, 27, 256, 312, ...]})
df['clip_values'] = df['values'].map(lambda x : 20 if x > 20 else x)
df['clip_values_v2'] = np.where(df['values'] > 20, 20, df['values'])

Спасибо

1 Ответ

0 голосов
/ 03 октября 2018

Не уверен, что лучше, вот один с clip -

df['clip_values'] = df['values'].values.clip(max=20)

Время для больших данных -

In [172]: df = pd.DataFrame({'values' : np.random.randint(0,100,(1000000))})

In [173]: %timeit df['clip_values'] = df['values'].map(lambda x : 20 if x > 20 else x)
1 loop, best of 3: 193 ms per loop

In [174]: %timeit df['clip_values_v2'] = np.where(df['values'] > 20, 20, df['values'])
100 loops, best of 3: 6.12 ms per loop

In [175]: %timeit df['clip_values_v3'] = df['values'].values.clip(max=20)
100 loops, best of 3: 2.95 ms per loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...