Из следующей серии pandas ниже я хочу удалить все символы, которые не являются цифрами.
df = pd.series(['0312861','00','66065','6-0io09in4','.314', '3194890809', ':"<>":', '3456.85236', '3465.2154', '312.724146','300.3634865'], index = [1,2,3,4,5,6,7,8,9,10,11])
цифры
- 0312861
- 00
- 66065
- 6-0io09in4
- .314
- 3194890809
- : "<>":
- 3456.85236
- 3465.2154
- 312.724146
- 300.3634865
Для этого я попробовал код:
df['numbers'] = df['numbers'].str.replace('\D', '', regex=True)
Я ожидаю, что результат будет: цифры
- 0312861
- 00
- 66065
- 6009
- 314
- 3194890809
- Нан
- 345685236
- 34652154
- 312724146
- 3003634865
Однако я получаю следующий вывод: числа
- 0312861
- 00
- 66065
- 60094
- 314
- 3194890809
- Нан
- Нан
- Нан
- Нан
- Nan * 108 8 *
Так что, похоже, мое регулярное выражение принимает последние три записи как числа с плавающей запятой, поэтому оно удаляет их. Однако я хочу просто удалить точку (.) Из трех последних записей.
Я пытался найти свое конкретное c решение, но не нашел его, поэтому я публикую его здесь в надежде получить один.