首页 > 解决方案 > 根据设置的规则过滤列中的值

问题描述

我有一个数据框

  Group    ID
   1      09239820
   2      2872498938
   2      1267
   3      23219823983
   3      267839236
   4      33287442

我想用字母替换 ID 列中的第 1、第 2 和第 4 个数字

   Replace 1st with N
   Replace 2nd with X
   Replace 4TH with D 

预期输出:

    Group    ID
     1      NX2D9820
     2      NX7D498938
     2      NX6D
     3      NX2D9823983
     3      NX7D39236
     4      NX2D7442

标签: pythonpandasnumpy

解决方案


您可以使用.str.replace捕获的组和反向引用:

df.ID = df.ID.astype(str)

df.ID.str.replace('..(.).(.*)', r'NX\1D\2')

0        NX3D820
1     NX7D498938
2           NX6D
3    NX2D9823983
4      NX7D39236
5       NX2D7442
Name: ID, dtype: object

推荐阅读