Принудительное значение ряда панд в скобках для замены значений, которые являются слишком высокими или низкими - PullRequest
0 голосов
/ 19 ноября 2018

Я ищу более эффективный способ ограничения значений ряда панд.

В приведенном ниже примере каждое значение, которое меньше 5, должно быть заменено на 5, каждое более высокое значение должно бытьбыть заменено на 25

import pandas as pd
df = pd.DataFrame({'value': list(range(30))})
df['value'].apply(lambda x: 5 if x < 5 else 25 if x > 25 else x)

Есть ли встроенный в панд или numpy, который делает то же самое?

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

С np.clip -

np.clip(df.value.values,a_min=5,a_max=25) # use df.value for series output
0 голосов
/ 19 ноября 2018

Я нашел встроенный.

В пандах есть клип, clip_lower и clip_upper

import pandas as pd
df = pd.DataFrame({'value': list(range(30))})
df['value'].clip(lower=5, upper=25)
0 голосов
/ 19 ноября 2018

Использование numpy.select или Series.clip:

m1 = df['value'] < 5
m2 = df['value'] > 25

df['Status'] = np.select([m1, m2], [5,25], df['value'])

Или:

df['Status'] = df['value'].clip(5, 25)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...