#python #pandas
#python #pandas
Вопрос:
У меня есть фрейм данных с переменной с именем STAFF . Для определенных сотрудников я хочу создать новую переменную и присвоить этой переменной значение (28) для конкретных сотрудников. Затем назначьте другое значение (14) для поставщиков, которые не входят в начальную группу поставщиков, которым я хочу присвоить значение 28. И те, которые не находятся ни в одном списке, равны 0.
У меня есть некоторый общий код, но мне было любопытно, как я могу отредактировать его, чтобы он включал только определенный персонал / не должен писать отдельные строки кода для каждого персонала.
MASTER.loc[MASTER['STAFF'] == 'Manuel V.', 'PG_Hours'] = 28.8
MASTER.loc[MASTER['STAFF'] == 'Dana M.', 'PG_Hours'] = 28.8
MASTER.loc[MASTER['STAFF'] == 'Suzanne B.', 'PG_Hours'] = 28.8
MASTER.loc[MASTER['STAFF'] == 'Tim G.', 'PG_Hours'] = 14
MASTER.loc[MASTER['STAFF'] =! '????', 'PG_Hours'] = 0
STAFF PG_Hours
Manuel V. 28
Tim G. 14
Dana M. 28
Suzanne B. 28
Chi N. 0
Missy S. 0
Ответ №1:
Вы можете использовать np.select
для присвоения нескольких значений на основе нескольких условий и .isin
для нескольких имен в одном из условий:
MASTER['PG_Hours'] = np.select([MASTER['STAFF'].isin(['Manuel V.', 'Dana M.', 'Suzanne B.']),
MASTER['STAFF'] == 'Tim G.'],
[28.8, 14], 0)
28.8
и 14
являются двумя результатами из двух условий, а ноль — альтернативный результат. Если у вас есть больше условий, вы можете соответствующим образом настроить их, перечислив условия по порядку и результаты по порядку. Порядок списка имеет значение для правильного сопоставления условия с результатом.