У меня есть два кадра данных панд, к которым я хочу присоединиться по employee_id.Один - Employee_Logs, другой - HR_Data.
Employee_Logs_df
employee_id action
2325255b login
51666164 login
51666164v login
r1211 logoff
r18552421 login
HR_Data_df
employee_id name
2325255 Rob
51666164 Tom
r1211 Tammy
r18552421 Ron
Я хочу присоединиться к ним, чтобы данные выглядели так:
New_df
employee_id action name
2325255b login Rob
51666164 login Tom
51666164v login Tom
r1211 logoff Tammy
r18552421 login Ron
Я мог бы сделать простое объединение, если бы поле employee_id совпало в обеих таблицах, но у одного и того же пользователя может быть "b
" или "v
" после ихидентификатор сотрудника, чтобы указать, будет ли учетная запись повышена как учетная запись администратора.У некоторых учетных записей перед идентификатором есть «r
», но в обеих таблицах это так.
В SQL это дает мне желаемые результаты:
select el*,
coalesce(h.name, hv.name, hb.name) as name
from employee_logs el left join
hr_data h
on el.employee_id = h.employee_id left join
hr_data hv
on el.employee_id = concat(h.employee_id, 'v') left join
hr_data hb
on el.employee_id = concat(h.employee_id, 'b');
Есть ли хороший способ в Python, где я могу выполнить некоторые действия и создать новый df?