首页 > 解决方案 > pandas:仅当它出现在字符串中的数字之后才删除点

问题描述

我有一个如下所示的数据框:

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

我只希望删除数字后面的点,而不是句末的点。(5.--> 5)

我试过

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

但它发送一个错误。

标签: pythonregexstringpandasdataframe

解决方案


以下应该有效 - 我们需要在正则表达式中使用捕获组,以便我们知道应该用什么值替换初始值。此外,我们需要使用原始字符串文字来转义正则表达式字符串中的反斜杠。

>>> 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

推荐阅读