如何基于请求目录DataFrame为新增请求DataFrame创建动态索引?
基于已有请求编号生成新增请求的递增索引
现有数据
1. 请求类型目录(记录各类型最新编号)
这是存储各请求类型当前最新编号的DataFrame:
import pandas as pd data = {'Req Type': ['A', 'B', 'C', 'D'], 'Req No': [20, 21, 19, 18]} df1 = pd.DataFrame(data) print(df1)
输出结果:
Req Type Req No 0 A 20 1 B 21 2 C 19 3 D 18
2. 本月新增请求记录
这是记录本月新增请求的DataFrame,仅包含请求类型:
data2 = {'Req Type': ['A', 'A', 'C', 'B']} df2 = pd.DataFrame(data2) print(df2)
输出结果:
Req Type 0 A 1 A 2 C 3 B
需求
需要在df2中新增一列Index,根据df1中对应请求类型的最新编号,为每个新增请求生成依次递增的编号。最终期望效果如下:
Req Type Index 0 A 21 1 A 22 2 C 20 3 B 22
实现代码
# 把df1转换为请求类型到最新编号的映射字典 req_type_to_last_no = df1.set_index('Req Type')['Req No'].to_dict() # 按请求类型分组,计算每组内的累计序号(从1开始),再加上对应类型的最新编号 df2['Index'] = df2.groupby('Req Type').cumcount() + 1 + df2['Req Type'].map(req_type_to_last_no) # 查看结果 print(df2)
代码说明
- 首先将
df1转换为字典,方便快速查找每个请求类型的最新编号; - 使用
groupby('Req Type').cumcount()获取每个请求类型组内的行索引(从0开始),加1后得到该组内的递增序号; - 将序号与对应类型的最新编号相加,得到最终的
Index值。
内容的提问来源于stack exchange,提问作者Amaury Pedraza
相关产品推荐
相关产品推荐

