В pandas вы можете избегать петель , если это возможно. Ваше решение должно быть заменено на boolean mask
на ~
для инвертирования вместо == False
и передано DataFrame.loc
:
m = df['SubconPartNumber1'].str.isdigit()
df.loc[~m, 'SubconPartNumber1'] = df.loc[~m, 'SubconPartNumber1'].str.replace(',', '/', regex = True).str.replace(r"\(.*\)-", '/', regex = True)
Но так как цифра c имеет только числа Я думаю, что маска здесь не нужна, также регулярное выражение должно быть объединено |
для or
, regex=True
является параметром по умолчанию, поэтому его следует опустить:
df = pd.DataFrame({'SubconPartNumber1':['345','aaa,','(bbb)-ccc']})
print (df)
SubconPartNumber1
0 345
1 aaa,
2 (bbb)-ccc
df['SubconPartNumber1'] = df['SubconPartNumber1'].str.replace(r",|\(.*\)-", '/')
print (df)
SubconPartNumber1
0 345
1 aaa/
2 /ccc