Ответ 1
Используйте векторизованный 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)
из документов мы видим это описание:
str или regex: str: строка, точно соответствующая to_replace, будет заменена со значением
Так как значения 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
здесь мы получаем точное совпадение во втором ряду и происходит замена.