首页 > 解决方案 > 根据两个数据框中的匹配值生成增量 ID

问题描述

嗨,我在基于两个数据帧生成增量 ID 时遇到了一些问题。我想根据匹配部门生成 id,并且当前年份和月份匹配最后生成的数据。

例子:

DF1 包含部门名称、生成的最后一个 ID 以及生成它的年份和月份。

在此处输入图像描述

DF2 包含员工姓名、分配的部门,这也是我为该员工生成 id 的地方。

在此处输入图像描述

正如您在 DF2 生成的 id 中看到的,如果它与当前年份和月份“2002”匹配,那么我将增加前一个 id 否则我会将计数返回 1 。

这是我尝试过的,但仅限于特定单元格

 # Generate ID, Enco
      DF2= DF2.merge(DF1, on ="Dept",how='left')

      DF2= DF2.reset_index()

      DF2['id'] = DF2.index.astype(int) + startCode

      DF2['Emp ID']=str(YYMM) + "-" + DF2['id'].astype(str)

标签: pythonpandas

解决方案


用于GroupBy.cumcount每组的计数器,也将不匹配YYMM的替换Last Count0重置计数:

yymm = int(pd.Timestamp('now').strftime('%y%m'))

DF2  = DF2.merge(DF1, on ="Dept",how='left')
s = DF2['Last Count'].where(DF2['YYMM'] == yymm, 0)
s1 = DF2.groupby('Dept').cumcount().add(1).add(s).astype(str)
DF2['Emp Id'] = s1 + '-' + DF2['YYMM'].astype(str)

推荐阅读