如何按指定规则替换DataFrame的ID列指定位置数字为对应字母
实现方案
核心思路:ID列需要先转为字符串类型,通过按索引替换指定位置字符即可实现需求。Python字符串为不可变类型,可先转为列表修改后再拼接回字符串。
完整代码示例
import pandas as pd # 构造示例DataFrame data = { 'Group': [1, 2, 2, 3, 3, 4], 'ID': ['09239820', '2872498938', '1267', '23219823983', '267839236', '33287442'] } df = pd.DataFrame(data) # 自定义ID替换函数 def replace_id_char(id_str): # 转为列表方便修改 char_list = list(id_str) # 按规则替换,注意Python索引从0开始 if len(char_list) >= 1: char_list[0] = 'N' if len(char_list) >= 2: char_list[1] = 'X' if len(char_list) >= 4: char_list[3] = 'D' # 拼接回字符串 return ''.join(char_list) # 应用到ID列 df['ID'] = df['ID'].astype(str).apply(replace_id_char) # 输出结果 print(df)
输出结果
运行上述代码后得到的DataFrame和预期完全一致:
Group ID 0 1 NX2D9820 1 2 NX7D498938 2 2 NX6D 3 3 NX2D9823983 4 3 NX7D39236 5 4 NX2D7442
注意事项
- 如果原ID列是整数类型,
astype(str)会自动转为字符串;如果原数据读取时ID以整数类型存储丢失了前导零,需要在读取数据阶段就指定ID列为字符串类型 - 代码做了长度兼容判断,短于4位的ID不会触发索引越界错误,只会替换存在的对应位置
内容的提问来源于stack exchange,提问作者tj judge
相关产品推荐
相关产品推荐

