当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.Series.str.replace用法及代码示例


用法:

Series.str.replace(pat, repl, n=- 1, case=None, flags=0, regex=None)

替换系列/索引中每次出现的模式/正则表达式。

等效于 str.replace()re.sub() ,具体取决于正则表达式值。

参数

patstr 或编译的正则表达式

字符串可以是字符序列或正则表达式。

replstr 或可调用

替换字符串或可调用对象。可调用对象传递正则表达式匹配对象,并且必须返回要使用的替换字符串。见re.sub()

nint,默认 -1(全部)

从一开始就更换的数量。

case布尔值,默认无

确定替换是否区分大小写:

  • 如果为 True,则区分大小写(如果 pat 是字符串,则默认为)

  • 设置为 False 不区分大小写

  • 如果 pat 是已编译的正则表达式,则无法设置。

flagsint,默认 0(无标志)

正则表达式模块标志,例如重新忽略。如果 pat 是已编译的正则表达式,则无法设置。

regex布尔值,默认为真

确定 passed-in 模式是否为正则表达式:

  • 如果为 True,则假定 passed-in 模式是正则表达式。

  • 如果为 False,则将模式视为文字字符串

  • 如果 pat 是已编译的正则表达式或 repl 是可调用的,则不能设置为 False。

返回

对象的系列或索引

对象的副本,其中所有匹配的 pat 替换为 repl

抛出

ValueError
  • 如果 regex 为 False 并且 repl 是可调用的或 pat 是已编译的正则表达式

  • 如果 pat 是已编译的正则表达式并且设置了 caseflags

注意

pat 是已编译的正则表达式时,所有标志都应包含在已编译的正则表达式中。将 caseflagsregex=False 与已编译的正则表达式一起使用将引发错误。

例子

pat 是字符串且 regex 为 True(默认值)时,给定的 pat 将编译为正则表达式。当 repl 是字符串时,它会将匹配的正则表达式模式替换为 re.sub() 。系列中的 NaN 值保持原样:

>>> pd.Series(['foo', 'fuz', np.nan]).str.replace('f.', 'ba', regex=True)
0    bao
1    baz
2    NaN
dtype:object

pat 是字符串且 regex 为 False 时,每个 pat 都替换为 replstr.replace() 一样:

>>> pd.Series(['f.o', 'fuz', np.nan]).str.replace('f.', 'ba', regex=False)
0    bao
1    fuz
2    NaN
dtype:object

repl 是可调用对象时,使用 re.sub() 在每个 pat 上调用它。可调用对象应该期望一个位置参数(一个正则表达式对象)并返回一个字符串。

要得到这个想法:

>>> pd.Series(['foo', 'fuz', np.nan]).str.replace('f', repr, regex=True)
0    <re.Match object; span=(0, 1), match='f'>oo
1    <re.Match object; span=(0, 1), match='f'>uz
2                                            NaN
dtype:object

反转每个小写字母单词:

>>> repl = lambda m:m.group(0)[::-1]
>>> ser = pd.Series(['foo 123', 'bar baz', np.nan])
>>> ser.str.replace(r'[a-z]+', repl, regex=True)
0    oof 123
1    rab zab
2        NaN
dtype:object

使用正则表达式组(提取第二组和交换案例):

>>> pat = r"(?P<one>\w+) (?P<two>\w+) (?P<three>\w+)"
>>> repl = lambda m:m.group('two').swapcase()
>>> ser = pd.Series(['One Two Three', 'Foo Bar Baz'])
>>> ser.str.replace(pat, repl, regex=True)
0    tWO
1    bAR
dtype:object

使用带有标志的编译正则表达式

>>> import re
>>> regex_pat = re.compile(r'FUZ', flags=re.IGNORECASE)
>>> pd.Series(['foo', 'fuz', np.nan]).str.replace(regex_pat, 'bar', regex=True)
0    foo
1    bar
2    NaN
dtype:object

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.Series.str.replace。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。