如何为DataFrame的CellID列添加分类后缀编号?
解决CellID添加后缀的问题
你用rename()没用是因为这个方法是用来改列名或索引名的,而你要修改的是CellID列里的单元格内容,完全不是一回事。下面是具体的实现步骤:
1. 提取CellID的前缀
先把每个CellID的前缀部分分离出来,假设你的CellID格式是前缀_r数字(比如KO_d0_r1的前缀是KO_d0),用字符串拆分提取:
umap['prefix'] = umap['CellID'].str.split('_r').str[0]
2. 按前缀分组生成递增后缀
按前缀分组后,用cumcount()生成每个组内从0开始的递增序号,再拼接到前缀后面替换原CellID:
umap['CellID'] = umap['prefix'] + '-' + umap.groupby('prefix').cumcount().astype(str)
3. 清理临时列(可选)
如果不需要保留prefix这一列,直接删掉:
umap.drop('prefix', axis=1, inplace=True)
示例效果
原CellID列:
KO_d0_r1 KO_d0_r2 WT_d2_r1 WT_d2_r2 WT_d2_r3
处理后变成:
KO_d0-0 KO_d0-1 WT_d2-0 WT_d2-1 WT_d2-2
自定义前缀提取逻辑
如果你的CellID格式不是_r分隔前缀和编号,灵活调整提取方式:
- 比如前缀是前两个下划线分隔的部分:
umap['prefix'] = umap['CellID'].str.split('_').str[:2].str.join('_') - 用正则提取匹配前缀:
umap['prefix'] = umap['CellID'].str.extract(r'(.*)_r\d+')
内容的提问来源于stack exchange,提问作者jonny jeep
相关产品推荐
相关产品推荐

