Python - добавление новых данных из функции

Столкнулся с проблемой, имеется dataset, вопрос крутится вокруг 3 столбцов:

  1. time_spend_company - int64
  2. promotion_last_5years - int64
  3. 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 не уверен
→ Ссылка