Python - добавление новых данных из функции
Столкнулся с проблемой, имеется dataset, вопрос крутится вокруг 3 столбцов:
- time_spend_company - int64
- promotion_last_5years - int64
- salary - object
Планировал на основе данных с трех столбцов образовать новый, написал такую функцию:
def payment(time,promotion,value):
if time["time_spend_company"] >= 5 & promotion["promotion_last_5years"] < 1 & value["salary"] == "low":
return "non-fair"
else:
return "fair"
Думал как добавить в новый столбец, у меня получилось так:
hr['fair remuneration'] = list(map(payment, hr["time_spend_company"],
hr["promotion_last_5years"], hr["salary"]))
Выдает такую ошибку: 'int' object is not subscriptable И указывает на time_spend_company. Прошу помочь с данным вопросом, возможно я вообще не туда иду.
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Проще, да и быстрее сделать так:
mask = (hr["time_spend_company"] >= 5) & \
(hr["promotion_last_5years"] < 1) & \
(hr["salary"] == "low")
hr.loc[ mask, 'fair remuneration'] = 'non-fair'
hr.loc[~mask, 'fair remuneration'] = 'fair'
Но можно и через функцию, тогда как-то так:
def payment(row):
if row["time_spend_company"] >= 5 & \
row["promotion_last_5years"] < 1 & \
row["salary"] == "low":
return "non-fair"
else:
return "fair"
hr['fair remuneration'] = hr.apply(payment, axis=1) # тут насчёт axis не уверен