當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。