Как вернуть значение в столбце на основе значений другого фрейма данных - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь вычислить столбец в фрейме данных на основе другого фрейма данных. Он используется для расчета бонуса за выслугу лет для расчета заработной платы HR.

два фрейма данных:

df1 = численность персонала

peopleID    peopleSeniority
1               2
2               6
3               12
4               30

df2 = бонус за выслугу лет

seniority    seniorityBonus
5            500
10           1000
15           2000 
20           3000

, и я хотел бы написать скрипт, который будет возвращать бонус за выслугу лет df2 в соответствии со стажем людей df1. Что-то, что подойдет: если df1 ['трудовой стаж']> df2 ['трудовой стаж]>, df2 [' старшинство '] например, если стаж df1 в годах> 5, 500, если стаж df1 в годах> 10, 2000 ...

Я пробовал использовать запрос, но он не работает, я не знаю, как написать al oop, который мог бы произвести расчет.

Есть ли у кого-нибудь идея ?

1 Ответ

0 голосов
/ 03 августа 2020

Проще, если бонус всегда увеличивается каждые пять лет. Добавьте столбец в df1, затем слейте с df2 в этом столбце

df1['seniority'] = (df1.peopleSeniority // 5) *5
df1 = df1.merge(df2, on='seniority')

Подробнее о слиянии читайте в документах и об этом Вопросы и ответы

Редактировать

Если количество лет в скобках не является четным, линейным или какой-либо другой алгебраической c функцией, то вы можете использовать pd.cut() для классификации трудового стажа каждого человека.

df1['seniority_bonus'] = pd.cut(df.peopleSeniority,
    bins=[0, 5, 8, 11, 15, 21, 30], right=False, labels=[0, 500, 1000, 1500, 2000, 2500])

Обратите внимание, что на этикетках на один элемент меньше, чем в корзинах. Это связано с тем, что с помощью списка из 7 целых чисел вы можете создать только 6 категорий (для 30-бесконечных категорий не будет).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...