Pandas Series.str.findall() 方法



Python Pandas 中的Series.str.findall()方法用於查詢 Series 或 Index 中每個字串中模式或正則表示式的所有出現。此方法等效於將re.findall()應用於 Series/Index 中的所有元素。

該方法返回一個 Series 或 Index 的列表,其中每個列表包含在相應字串中找到的模式或正則表示式的所有不重疊匹配。它對於查詢和提取 Pandas Series、Index 或 DataFrame 列中每個字串中指定模式或正則表示式的所有不重疊出現非常有用。

語法

以下是 Pandas Series.str.findall() 方法的語法:

Series.str.findall(pat, flags=0)

引數

Series.str.findall() 方法接受以下引數:

  • pat - 表示要搜尋的模式或正則表示式的字串。

  • flags - 可選整數,預設為 0。來自 re 模組的標誌,例如 re.IGNORECASE,用於修改模式匹配行為。

返回值

Series.str.findall() 方法返回一個包含字串列表的 Series 或 Index。每個列表包含在相應字串中找到的模式或正則表示式的所有不重疊匹配。如果未找到匹配項,則為這些元素返回空列表。

示例 1

此示例演示如何在 Series 中每個字串元素中查詢子字串“t”的所有出現。

import pandas as pd

# Create a Series of strings
s = pd.Series(['tutorials', 'articles', 'Examples'])

# Find all occurrences of the substring 't' in each string
result = s.str.findall('t')

print("Input Series:")
print(s)
print("\nOccurrences of 't':")
print(result)

執行以上程式碼後,將產生以下輸出:

Input Series:
0    tutorials
1     articles
2     Examples
dtype: object

Occurrences of 't':
0    [t, t]
1       [t]
2        []
dtype: object

空列表[]表示元素中沒有模式出現。

示例 2

此示例演示如何使用正則表示式查詢所有模式的出現。在這裡,我們查詢所有以“t”開頭後跟任何字元的子字串。

import pandas as pd

# Create a Series of strings
s = pd.Series(['tutorials', 'testing', 'test cases'])

# Find all substrings starting with 't' followed by any character
result = s.str.findall(r't.')

print("Input Series:")
print(s)
print("\nOccurrences of pattern 't.':")
print(result)

執行以上程式碼後,將產生以下輸出:

Input Series:
0    tutorials
1      testing
2   test cases
dtype: object

Occurrences of pattern 't.':
0    [tu, to]
1    [te, ti]
2    [te, t ]
dtype: object

輸出顯示正則表示式模式“t.”的匹配列表,其中每個元素代表與模式匹配的子字串。

示例 3

此示例演示將Series.str.findall()方法應用於 DataFrame。我們在 DataFrame 中查詢與指定模式匹配的所有電子郵件地址。

import pandas as pd

# Create a DataFrame 
df = pd.DataFrame({
    'Email': ['user1@example.com', 'info@tutorialspoint.com', 'contact@website.org']
})

# Find all occurrences of the pattern 'tutorialspoint.com' in the 'Email' column
result = df['Email'].str.findall('tutorialspoint.com')

print("Input DataFrame:")
print(df)
print("\nOccurrences of 'tutorialspoint.com':")
print(result)

執行以上程式碼後,將產生以下輸出:

Input DataFrame:
                      Email
0          user1@example.com
1  info@tutorialspoint.com
2       contact@website.org

Occurrences of 'tutorialspoint.com':
0    []
1    [tutorialspoint.com]
2    []
Name: Email, dtype: object

輸出顯示僅在第二個電子郵件地址中找到了模式“tutorialspoint.com”。

python_pandas_working_with_text_data.htm
廣告