有一个 Series,值为身份证号码,需要把生日部分(中间 8 位)替换成星号。

import pandas as pd
ser = pd.Series(['123456199001011234', '789012198502027890'])
ser

参考答案:用 str.replace 正则分组,把身份证分成 前6位 / 中间8位 / 后4位,中间段替换成 ******:

ser.str.replace(r'^(\d{6})(\d{8})(\d{4})',
                r'\1******\3',
                regex=True)

输出:

0    123456******1234
1    789012******7890
dtype: object