Вы должны использовать
df['dummy'] = df['dummy'].astype(str).str.replace(r'[^\d.+-]+', '')
См. Демонстрационный пример regex .
Метод pandas равен Series.str.replace
, чтобы найти и заменить совпадения другой строкой ( пустая, поскольку вы удаляете совпадения).
Нужный вам шаблон: [^\d.+-]+
, отрицательный класс символов , который соответствует любому символу, 1 или более вхождения, кроме di git, .
, +
или -
. Обратите внимание на позицию -
, она должна находиться в начале или конце класса символов, чтобы считаться буквальным символом -
, иначе это создаст диапазон.