python - 根据两个数据框中的匹配值生成增量 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)
解决方案
用于GroupBy.cumcount
每组的计数器,也将不匹配YYMM
的替换Last Count
为0
重置计数:
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)
推荐阅读
- windows - windows 10 cmd,什么决定了哪些文件可以在没有路径的情况下访问?
- r - 在自定义 R 函数名称中包含“<-”赋值运算符有什么影响?
- java - 实现 ArrayList 的迭代器
- azure - nopCommerce Docker 安装到 Azure
- javascript - React/TSX 文件未在 scripting.executeScript() 方法中执行 - Chrome 扩展 MV3
- android - 如何让Android系统设置的显示大小和字体大小不改变应用布局?
- flutter - notifyListeners() 不向 UI 返回数据
- wordpress - 浏览某些 WooCommerce 订单,收集数据,然后通过电子邮件发送结果
- list - 如何计算一组元素的所有可能组合的总和?[Python]
- amazon-web-services - 无法在负载均衡器的 Route53 记录上卷曲