You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按指定规则替换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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:57:04