Используйте Series.str.lower
с Series.str.replace
:
df['col'] = df['col'].str.lower().str.replace('_','')
print (df)
col
0 class1
1 class1
2 class1
3 class1
4 standard
5 class2
Другая идея заключается в извлечении числовых значений из значений Series.str.extract
, добавьте Class
строку и в последнюю очередь замените нечисловые значения на оригинальные на Series.fillna
:
df['col'] = ('Class' + df['col'].str.extract('(\d+)', expand=False)).fillna(df['col'])
print (df)
col
0 Class1
1 Class1
2 Class1
3 Class1
4 Standard
5 Class2
Сведения :
print (df['col'].str.extract('(\d+)', expand=False))
0 1
1 1
2 1
3 1
4 NaN
5 2
Name: col, dtype: objec
print (('Class' + df['col'].str.extract('(\d+)', expand=False)))
0 Class1
1 Class1
2 Class1
3 Class1
4 NaN
5 Class2
Name: col, dtype: object