pandas: удалить точку только в том случае, если она появляется после ди git в строке - PullRequest
2 голосов
/ 05 февраля 2020

У меня есть датафрейм, который выглядит следующим образом:

df=  pd.DataFrame(["I", "have", "5.", "apples", "."]
                 columns=['words'])

, и я хочу, чтобы удалялась только точка, следующая за числом, а не точка в конце предложения. (5. -> 5)

Я пытался

df["Words"].str.replace("\d.", "\d", regex=True)

, но отправляет ошибку.

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Нам нужно

df["words"].str.replace(r"^(\d+)\.$", r"\1")

Это также соответствует более длинным цифрам и гарантирует, что последний символ будет точкой, а не чем-либо.

Ответ CDJB не совсем корректен:

df = pd.DataFrame(["I", "have", "50a", "apples", "."],
                  columns=['words'])
[ins] In [12]: df["words"].str.replace(r"(\d).", r"\1")
Out[12]:
0         I
1      have
2        5a
3    apples
4         .
Name: words, dtype: object
1 голос
/ 05 февраля 2020

Следующее должно работать - нам нужно использовать группу захвата в регулярном выражении, чтобы мы знали, какое значение должно заменить начальное значение. Кроме того, нам нужно использовать литерал необработанной строки, чтобы избежать обратной косой черты в строке регулярного выражения.

>>> df = pd.DataFrame(["I", "have", "5.", "apples", "."],
                  columns=['words'])
>>> df["words"].str.replace(r"(\d)\.", r"\1")
0         I
1      have
2         5
3    apples
4         .
Name: words, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...