Используйте метод векторизованного str
replace
:
In [30]:
df['range'] = df['range'].str.replace(',','-')
df
Out[30]:
range
0 (2-30)
1 (50-290)
EDIT
Итак, если мы посмотрим на то, что вы пытались и почему это не сработало:
df['range'].replace(',','-',inplace=True)
из docs мы видим это desc:
str или regex : str: строка, точно соответствующая to_replace, будет заменена значением
blockquote>Так как значения str не совпадают, никакой замены не происходит, сравните со следующим:
In [43]: df = pd.DataFrame({'range':['(2,30)',',']}) df['range'].replace(',','-', inplace=True) df['range'] Out[43]: 0 (2,30) 1 - Name: range, dtype: object
здесь мы получаем точное совпадение во второй строке и происходит замена.