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


Python pandas.Series.str.split用法及代碼示例


用法:

Series.str.split(pat=None, n=- 1, expand=False, *, regex=None)

圍繞給定的分隔符/分隔符拆分字符串。

在指定的分隔符字符串處從頭開始拆分係列/索引中的字符串。

參數

patstr 或編譯的正則表達式,可選

要拆分的字符串或正則表達式。如果未指定,則在空格處拆分。

nint,默認 -1(全部)

限製輸出中的拆分數量。 None , 0 和 -1 將被解釋為返回所有拆分。

expand布爾值,默認為 False

將拆分的字符串展開為單獨的列。

  • 如果 True ,返回 DataFrame/MultiIndex 擴展維度。

  • 如果 False ,則返回包含字符串列表的係列/索引。

regex布爾值,默認無

確定 passed-in 模式是否為正則表達式:

  • 如果 True ,假設 passed-in 模式是正則表達式

  • 如果 False ,則將模式視為文字字符串。

  • 如果 Nonepat 長度為 1,則將 pat 視為文字字符串。

  • 如果 Nonepat 長度不為 1,則將 pat 視為正則表達式。

  • 如果 pat 是已編譯的正則表達式,則不能設置為 False

返回

Series、Index、DataFrame 或 MultiIndex

類型匹配調用者,除非expand=True(見注釋)。

拋出

ValueError
  • 如果 regex 為 False 並且 pat 是已編譯的正則表達式

注意

n 關鍵字的處理取決於找到的拆分數量:

  • 如果發現拆分 > n ,請先進行 n 拆分

  • 如果發現拆分 n ,則進行所有拆分

  • 如果對於某一行,找到的拆分數 n ,則追加 None 以填充到 n if expand=True

如果使用 expand=True ,Series 和 Index 調用者分別返回 DataFrame 和 MultiIndex 對象。

使用帶有patregex=False 作為編譯的正則表達式會引發錯誤。

例子

>>> s = pd.Series(
...     [
...         "this is a regular sentence",
...         "https://docs.python.org/3/tutorial/index.html",
...         np.nan
...     ]
... )
>>> s
0                       this is a regular sentence
1    https://docs.python.org/3/tutorial/index.html
2                                              NaN
dtype:object

在默認設置中,字符串由空格分隔。

>>> s.str.split()
0                   [this, is, a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype:object

如果沒有n 參數,rsplitsplit 的輸出是相同的。

>>> s.str.rsplit()
0                   [this, is, a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype:object

n 參數可用於限製分隔符上的拆分數量。 splitrsplit 的輸出不同。

>>> s.str.split(n=2)
0                     [this, is, a regular sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype:object
>>> s.str.rsplit(n=2)
0                     [this is a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype:object

pat 參數可用於按其他字符分割。

>>> s.str.split(pat="/")
0                         [this is a regular sentence]
1    [https:, , docs.python.org, 3, tutorial, index...
2                                                  NaN
dtype:object

使用 expand=True 時,拆分元素將擴展為單獨的列。如果存在 NaN,它將在拆分期間傳播到整個列。

>>> s.str.split(expand=True)
                                               0     1     2        3         4
0                                           this    is     a  regular  sentence
1  https://docs.python.org/3/tutorial/index.html  None  None     None      None
2                                            NaN   NaN   NaN      NaN       NaN

對於稍微複雜的用例,例如從 url 中拆分 html 文檔名稱,可以使用參數設置的組合。

>>> s.str.rsplit("/", n=1, expand=True)
                                    0           1
0          this is a regular sentence        None
1  https://docs.python.org/3/tutorial  index.html
2                                 NaN         NaN

請記住在顯式使用正則表達式時轉義特殊字符。

>>> s = pd.Series(["foo and bar plus baz"])
>>> s.str.split(r"and|plus", expand=True)
    0   1   2
0 foo bar baz

正則表達式可用於處理 url 或文件名。當 pat 是字符串且 regex=None (默認值)時,僅當 len(pat) != 1 時,給定的 pat 才會編譯為正則表達式。

>>> s = pd.Series(['foojpgbar.jpg'])
>>> s.str.split(r".", expand=True)
           0    1
0  foojpgbar  jpg
>>> s.str.split(r"\.jpg", expand=True)
           0 1
0  foojpgbar

regex=Truepat 被解釋為正則表達式

>>> s.str.split(r"\.jpg", regex=True, expand=True)
           0 1
0  foojpgbar

編譯的正則表達式可以傳遞為pat

>>> import re
>>> s.str.split(re.compile(r"\.jpg"), expand=True)
           0 1
0  foojpgbar

regex=Falsepat 被解釋為字符串本身

>>> s.str.split(r"\.jpg", regex=False, expand=True)
               0
0  foojpgbar.jpg

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.Series.str.split。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。