Вы можете использовать
df['column'] = df['column'].str.replace(r'^(C3-)(\d)$', r'\g<1>000\2')
См. Демоверсию regex . Если C
может быть любой заглавной буквой ASCII, замените ее на [A-Z]
.
или чуть более обобщенно c для 1-3 ди git чисел:
df['column'] = df['column'].str.replace(r'^(C3-)(\d{1,3})$', lambda x: "{}{}".format(x.group(1), x.group(2).zfill(4)))
Подробности
^
- старт (C3-)
- группа 1: C3-
(\d)
- группа 2: a di git (\d{1,3}
соответствует 1–3 цифрам) $
- конец строки \g<1>
- значение группы 1 000
- три нуля \2
- значение группы 2
A Python тест:
import pandas as pd
df = pd.DataFrame({'column': ['C3-1', 'C3-12', 'C3-123', 'C3-1234']})
df['column'] = df['column'].str.replace(r'^(C3-)(\d{1,3})$', lambda x: "{}{}".format(x.group(1), x.group(2).zfill(4)))
Выход:
>>> df
column
0 C3-0001
1 C3-0012
2 C3-0123
3 C3-1234