Множественная замена в датафрейме по условию

Рейтинг: 0Ответов: 1Опубликовано: 06.03.2023

Необходимо сделать замены в числовых данных в соответствии с условиями (так, как это делается в Эксель, но с меньшим количеством телодвижений).

Данные выглядят так: https://docs.google.com/spreadsheets/d/1hqwSh0FyHBnwp6G2srua7IgMsviVbgHjD50pMSu17Vs/edit?usp=sharing

Условия замены показателей следующие:

введите сюда описание изображения

Использую df['Показатель 1'] = np.where( (df['Показатель 1'] >= 16)&(df['Показатель 1'] <= 30), '2 группа', df['Показатель 1']) , но не очень понимаю, как сделать несколько замен сразу (при замене хотя бы одного из показателей на НЕчисловой, выдает ошибку). Может, есть какие-то более подходящие функции?

Ответы

▲ 2Принят

Используйте pandas.cut - разбиение значений на дискретные интервалы

df = pd.DataFrame({'П1': [15, 16, 30, 31, 199, 200, 35.2, 166.3, 80.6, 43.4, 265.1, 26.4, 120.3, 55.5, 31.7, 118.4]})
df['П1_группы'] = pd.cut(df['П1'], bins=[float("-inf"), 15, 30, 199, float("inf")],
                         labels=['1 группа', '2 группа', '3 группа', '4 группа'], right=True)
print(df)
       П1 П1_группы
0    15.0  1 группа
1    16.0  2 группа
2    30.0  2 группа
3    31.0  3 группа
4   199.0  3 группа
5   200.0  4 группа
6    35.2  3 группа
7   166.3  3 группа
8    80.6  3 группа
9    43.4  3 группа
10  265.1  4 группа
11   26.4  2 группа
12  120.3  3 группа
13   55.5  3 группа
14   31.7  3 группа
15  118.4  3 группа

Остальные столбцы - аналогично