根据设置的规则过滤列中的值



我有一个数据框架

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

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

df.ID = df.ID.astype(str)
df.ID.str.replace('..(.).(.*)', r'NX1D2')
0        NX3D820
1     NX7D498938
2           NX6D
3    NX2D9823983
4      NX7D39236
5       NX2D7442
Name: ID, dtype: object

您可以使用正则表达式。

^..(.).匹配前4个字符,并捕获第三个字符,使用反向引用1:

在输出中替换它。
df['ID'] = df['ID'].astype(str).str.replace('^..(.).', r'NX1D')
Group           ID
0      1      NX3D820
1      2   NX7D498938
2      2         NX6D
3      3  NX2D9823983
4      3    NX7D39236
5      4     NX2D7442

最新更新