Где же ты, где или np.where()
Недавно открыла для себя использование np.where(). np – это numpy.
Покажу на простых примерах как его можно использовать. Создадим датафрейм. Не забываем import numpy as np Ну и как всегда import pandas as pd
df = pd.DataFrame({'Name': ['Дмитрий', 'Антон', 'Арсений', 'Сергей','Катерина'],
'Age': [38, 32, 40, 39, 37],
'Gender': ['M', 'M', 'M', 'M','F']})
Хочу создать столбец, основываясь на данных столбца Age:
📍 Если возраст старше или равен 35, то пусть в строке будет написано 'Старше 35', в противном случае - 'Моложе 35'
df['check_where_одно_условие'] = np.where(df.Age >=35, 'Старше 35', 'Моложе 35')
📍 Можно поставить два условия и больше. Если возраст старше или равен 35 и пол смотрим только мужской - M
df['check_where_два_условия'] = np.where((df.Age >=35)&(df.Gender == 'M'), 'Мужчина старше 35', 'нет')
Напротив Катерины в столбце 'check_where_два_условия' будет написано ‘нет’, так как оба условия одновременно не выполняются. Возраст старше 35, а вот пол женский - (df.Age >=35)&(df.Gender == 'M')
📍 Хотим рассчитать возраст через 3 года при условии, что это мужчина. Удобно, что посчитать что-то можно, не только текст вписать.
df['check_where_расчетное'] = np.where(df.Gender == 'M', df.Age+3, df.Age)
Мы также можем установить значения DataFrame, используя атрибут loc[].
df.loc[df.Age >=35, 'check_loc'] = 'да'
Но тогда там, где условие не выполняется будут пропуски – NaN. Как вариант, заполнить потом эти пропуски нулями.
В этом плане np.where() удобен тем, что можно сразу поставить, что будет прописано и при выполнении условия и при НЕ выполнении.
Обсуждение 1
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram