如何将DataFrame的ID列字符串替换为有序caso/controle命名
处理DataFrame中ID列的批量重命名需求
实现思路
- 将提取到的唯一ID拆分为含"caso"和不含"caso"的两组
- 分别为两组ID生成带两位递增序号的标准化命名
- 构建原ID到新命名的映射字典,最后用字典替换原DataFrame的ID列
代码实现
import pandas as pd # 假设你的DataFrame为df,已获取唯一ID列表 unique_ids = df['ID'].unique() # 拆分两类ID caso_group = [uid for uid in unique_ids if 'caso' in uid] controle_group = [uid for uid in unique_ids if 'caso' not in uid] # 构建原ID与新命名的映射 name_map = {} # 处理含caso的ID,生成caso_01、caso_02...格式 for seq, uid in enumerate(caso_group, start=1): name_map[uid] = f"caso_{seq:02d}" # 处理不含caso的ID,生成controle_01、controle_02...格式 for seq, uid in enumerate(controle_group, start=1): name_map[uid] = f"controle_{seq:02d}" # 替换原DataFrame中的ID列 df['ID'] = df['ID'].map(name_map)
关键细节说明
enumerate(..., start=1)让序号从1开始,匹配示例中的编号逻辑f"caso_{seq:02d}"通过格式化字符串保证序号为两位数字(不足补0)map()方法会自动处理原DataFrame中重复出现的ID,无需额外遍历行
内容的提问来源于stack exchange,提问作者Camila
相关产品推荐
相关产品推荐

