我有两个pandas数据框,我想加入到employee\u id中。一个是employee\u Logs,另一个是HR\u Data
员工日志
employee_id action
2325255b login
51666164 login
51666164v login
r1211 logoff
r18552421 login
人力资源数据
employee_id name
2325255 Rob
51666164 Tom
r1211 Tammy
r18552421 Ron
我想加入他们,使数据看起来像这样:
新建\u df
employee_id action name
2325255b login Rob
51666164 login Tom
51666164v login Tom
r1211 logoff Tammy
r18552421 login Ron
如果employee\u id字段在两个表上匹配,我可以做一个简单的连接,但是同一个用户可以在他们的employee id后面有一个“b
”或“v
”,以指定帐户是否像管理员帐户一样被提升。有些用户帐户的id前面有一个“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中有没有一种好的方法可以执行一些where操作并创建一个新的df
您可以使用正则表达式从
Employee_Logs_df
中的employee_id
中去掉尾随字母,然后将其映射到HR_Data_df
中的姓名:如果需要,可以通过合并执行类似的操作:
相关问题 更多 >
编程相关推荐