如何解决员工明细
我在A列中有一个仅包含“ Employee ID”的Excel工作表,如下所示。这些详细信息保存在名为EmpId.xlsx的Excel工作表中
1677
5597
5623
5618
我还有一张Excel工作表,其中包含10000+名员工的“员工详细信息”。例如:员工详细信息excel工作表包含包含很多员工的数据,这是下面显示的员工ID示例之一。这些详细信息保存在名为UserList.xlsx的Excel工作表中
Empid Name Location JobTitle Email-id Department
1677 Umesh Gadag ASE abc@gmail.com Civil
我有一个有效的Python代码,运行时会得到输出。基本上,Empid excel工作表仅包含Employee ID,而UserList excel工作表包含10000+雇员的详细信息。基本上对于EmpIds我在输出中获得用户列表详细信息。下面是代码
import pandas as pd
df1 = pd.read_excel (r'C:\\Users\\Kiran\\Desktop\\PythonWork\\EmpId.xlsx')
df2= pd.read_excel (r'C:\\Users\\Kiran\\Desktop\\PythonWork\\UserList.xlsx')
df1 = df1.reset_index().rename(columns= {"index": "order"})
df3 = pd.merge(df1,df2,on = "Empid").sort_values("order").drop("order",axis=1)
df3.to_excel("Output.xlsx",index=False)
import os
file = "Output.xlsx"
os.startfile(file)
该代码可以正常工作,但是存在问题。让我们假设我需要这4个EmpIds(1677,5597,5623,5618)的用户详细信息,当我运行时,我得到的输出为
Empid Name Location JobTitle Email-id Department
1677 Umesh Gadag ASE abc@gmail.com Civil
5597 Rahul Hubli ASE xyz@gmail.com Electrical
5618 Ramesh Hubli SE pqr@gmail.com Civil
我没有得到5623的输出,那很好,因为可能是Empid 5623,所以可能没有用户列表。但是在输出中,我除了获得输出为:
Empid Name Location JobTitle Email-id Department
1677 Umesh Gadag ASE abc@gmail.com Civil
5597 Rahul Hubli ASE xyz@gmail.com Electrical
5623
5618 Ramesh Hubli SE pqr@gmail.com Civil
以便我以后可以进行交叉检查。如何修改代码,以便对于任何EmpID(如果没有用户列表),我都将如上所示那样为空。有人可以指导我修复它。
解决方法
请尝试在合并中包括:how="left"
应显示左表(df1)中的所有行,并仅添加df2中也发生的内容
df3 = pd.merge(df1,df2,on = "Empid",how="left").sort_values("order").drop("order",axis=1)
因为每个documentation的默认值为:how='inner'
,这将丢弃两个表中都不存在的所有内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。