仅从数字分隔符中删除逗号(正则表达式分组)

2024-03-29 15:59:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在数据框中有一列字母数字字符串。 目标是只从数字分隔符中删除逗号。例如:

Hello, world! -> Hello, world!

但是

Warhammer 40,000 -> Warhammer 40000
Codename 1,337 -> Codename 1337

我可以推断,只有当两边都是数字“[0-9]+,[0-9]+”时,我才想删除逗号。然而,我似乎无法找到保持相同数字的方法。有人能帮忙吗?如果相关,数据帧的大小为几十万行,平均字符串约为100个字

这是我的第一篇文章。我试图搜索相关问题,但没有找到。英语不是我的母亲图格,我可能错过了这个问题的关键词。如果发生这种情况,请将我链接到正确的位置。非常感谢,非常感谢:)

更新:添加关键字“分组”作为我的提醒


Tags: 数据方法字符串hello目标world字母文章
3条回答

您需要将数字捕获到组(\d+),(\d+)

import re

items = ['Hello, world!', 'Warhammer 40,000', 'Codename 1,337']

for item in items:
  item = re.sub(r'(\d+),(\d+)', r'\1\2', item)
  print(item)

结果:

Hello, world!
Warhammer 40000
Codename 1337

您可以将Pandas str.replace()与正则表达式一起使用:

import pandas as pd

data = [
    "Hello, world!",
    "Warhammer 40,000",
    "Codename 1,337",
    "Total USD 1,27",
    "1,080,000,000 kilometers per hour"
]

df = pd.DataFrame(data, columns=["title"])
df["title"] = df["title"].str.replace(",(\d{3})", "\\1")
df

产生

    title
0   Hello, world!
1   Warhammer 40000
2   Codename 1337
3   Total USD 1,27
4   1080000000 kilometers per hour

使用@uingtea regex,但对于pandas dataframe,可以通过以下方式执行:

import pandas as pd
import re

df = pd.DataFrame({'col':['Hello, world!', 'Warhammer 40,000', 'Codename 1,337']})
df['col'] = df['col'].apply(lambda x: re.sub(r'(\d+),(\d+)', r'\1\2', x))

相关问题 更多 >