员工详情

Employee Details

我的 excel sheet 在 A 列中仅包含“员工 ID”,如下所示。这些详细信息保存在名为 EmpId.xlsx

的 excel sheet 中
1677
5597
5623
5618

我还有一个 excel sheet 包含 10000 多名员工的“员工详细信息”。例如:员工详细信息 excel sheet 包含包含大量员工的数据,这里是下面显示的员工 ID 的示例之一。这些详细信息保存在名为 UserList.xlsx

的 excel sheet 中
Empid   Name    Location    JobTitle    Email-id     Department
1677    Umesh     Gadag      ASE      abc@gmail.com    Civil

我有一个工作 Python 代码,当我 运行 我得到输出。基本上,Empid excel sheet 仅包含员工 ID,而 UserList excel sheet 包含 10000 多名员工的详细信息。基本上对于 EmpIds,我在 output.Below 中获取用户列表详细信息是代码

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"

应该显示从左边开始的所有行 table (df1) 并且只添加 df2

中也出现的内容
df3 = pd.merge(df1, df2, on = "Empid", how="left").sort_values("order").drop("order", axis=1)

因为根据 documentation 默认值是:how='inner' 这将丢弃在两个 table 中都不存在的所有内容。