Настройка
Это не обычные тире chr(45)
.Это chr(8211)
df = pd.DataFrame(dict(series=['hi–hi', 'ho_ho', 'hidy–ho', 'oh–no']))
pandas.Series.str.replace
будет использовать regex
по умолчанию pandas.Series.replace
будет не использовать regex
по умолчанию
Необходимость regex=True
заключается в том, что она позволяет замене соответствовать части строки.В противном случае он совпадает только со всей строкой.
Это работает для меня
df['series2'] = df['series'].replace(chr(8211), '', regex=True)
df
series series2
0 hi–hi hihi
1 ho_ho ho_ho
2 hidy–ho hidyho
3 oh–no ohno
Как и
df['series3'] = df['series'].str.replace(chr(8211), '')
df
series series2 series3
0 hi–hi hihi hihi
1 ho_ho ho_ho ho_ho
2 hidy–ho hidyho hidyho
3 oh–no ohno ohno
Или
df['series4'] = [s.replace(chr(8211), '') for s in df['series']]
df
series series2 series3 series4
0 hi–hi hihi hihi hihi
1 ho_ho ho_ho ho_ho ho_ho
2 hidy–ho hidyho hidyho hidyho
3 oh–no ohno ohno ohno