gpt4 book ai didi

regex - 如何使用选择性正则表达式在 Pandas 系列中执行替换?

转载 作者:行者123 更新时间:2023-12-01 11:17:28 24 4
gpt4 key购买 nike

我想在申请 pandas.Series.str.replace 时使用正则表达式.我知道它采用正则表达式,但我的输出不符合预期。这是一个简单的例子。假设我有

ser = pd.Series(['asd3', 'qwe3', 'asd4', 'zxc'])

我想把 'asd3''asd4' 变成 'asd'。也就是说,只需删除末尾的任何整数。我正在使用代码:

ser.str.replace('asd([0-9])','')

请注意,我正在使用 ([0-9]) 表示法,我将其解释为:对于系列中的任何元素,如果它看起来像 'asd([0 -9])',然后将[0-9]替换为``(即去掉)。但是我得到的是

0    
1 qwe3
2
3 zxc

而我想得到的是:

0  asd
1 qwe3
2 asd
3 zxc

这是一个简单的例子,我的正则表达式字符串比那个更难看,但我希望这传达了我打算做什么的想法。

最佳答案

在您的情况下,.replace('asd([0-9])','') 只是删除 asd 及其后的任何数字。

使用

ser.str.replace('asd[0-9]+','asd')

ser.str.replace('(asd)[0-9]+',r'\1')

.replace('asd[0-9]+','asd') 将用 asd 替换 asd 及其后的任何 1+ 位,而在.replace('(asd)[0-9]+',r'\1')中,asd子串会被捕获到第 1 组(由于捕获括号)和 1+ 个数字将被匹配,整个匹配将替换为包含第 1 组值的 \1 占位符(即 asd).

关于regex - 如何使用选择性正则表达式在 Pandas 系列中执行替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48756467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com