比较从两个excel文件创建的两个数据框,根据

2024-06-16 12:44:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个excel文件,A和B。主副本,其中有员工姓名和组织名称的更新记录(NameOrg)。文件B包含NameOrg列,这些列的记录稍旧一些,还有许多我们不感兴趣的其他列

   Name      Org
0   abc    ddc systems
1   sdc    ddc systems
2   csc    ddd systems
3   rdc    kbf org
4   rfc    kbf org

我想执行以下操作

1)对于文件B(列NameOrg)中的所有现有条目,我想比较文件B和文件A,在文件B中创建另外两列(NewemployeeOrg_change

  • 如果在“Name”下的文件B中发现缺少名称条目,则使用“Y”更新“Newemployee”列
  • 如果我们注意到“Org”下的组织发生了变化,请将“Org_change”列更新为“新组织名称(根据与表A的比较)”

到目前为止,我已经对这两个数据框进行了concat,以获取新员工的姓名 但没有得到进一步的线索如何继续

full_set = pd.concat([B, A]).drop_duplicates(subset=['Name'])

任何帮助都将不胜感激。谢谢


Tags: 文件nameorg名称记录员工条目change
1条回答
网友
1楼 · 发布于 2024-06-16 12:44:19

在删除副本时,您可以选择不保留任何一个副本,这基本上意味着您只保留唯一的值。如果其中一个数据帧是另一个数据帧的严格子集,这将为您提供更新

diff_set = pd.concat([old, new]).drop_duplicates(subset=['Name'], keep=False)

看来你的指数不匹配。如果遇到此问题,可能需要首先设置索引

diff_set = pd.concat([old.set_index("Org"), new.set_index("Org")]).drop_duplicates(subset=['Name'], keep=False).reset_index(drop=False)

其中,最后一个reset_index只是恢复为索引只是一个枚举计数器的格式

编辑:

ll
Out[101]: 
  Name          Org
0  abc  ddc systems
1  sdc  ddc systems
2  csc  ddd systems
3  rdc      kbf org
4  rfc      kbf org

ll2
Out[102]: 
   Name          Org
0   abc  ddc systems
1   sdc  ddc systems
2   csc  ddd systems
3   rdc      kbf org
4   rfc      kbf org
5  Spam  ddc systems
6  John  ddc systems
7   Foo  ddd systems

diff_set = pd.concat([ll.set_index("Org"), ll2.set_index("Org")]).drop_duplicates(subset=['Name'], keep=False).reset_index(drop=False)

diff_set
Out[104]: 
           Org  Name
0  ddc systems  Spam
1  ddc systems  John
2  ddd systems   Foo

我可以添加任意数量的员工,它会继续工作。^^

相关问题 更多 >