背景
根據字串中的多個子字串過濾大型Pandas 資料幀列可能是一項計算成本較高的操作。傳統的方法是為每個子字串應用掩碼,然後使用邏輯運算來減少它。
建議的方法
為了提高效率,我們建議利用正規表示式(帶有轉義)特殊字元)用於子字串匹配。透過使用正規表示式管道 (|) 連接轉義子字串,我們可以針對字串測試每個子字串,直到找到匹配項。
實現
import re # Escape special characters in substrings esc_lst = [re.escape(s) for s in lst] # Join escaped substrings using regex pipe pattern = '|'.join(esc_lst) # Filter based on concatenated pattern df[col].str.contains(pattern, case=False)
效能注意事項
透過減少數量來增強表現每行所需的測試數。此方法會檢查子字串,直到找到匹配項,從而消除不必要的迭代。
基準測試
使用包含50,000 個字串和100 個子字串的範例資料幀,所提出的方法大約需要1其次,與傳統方法的五秒相比。這種效能優勢會隨著資料集的增加而增加。
結論
透過利用帶有轉義特殊字元的正規表示式,我們可以有效地過濾Pandas 資料幀中的多個子字串,從而顯著減少計算開銷。
以上是正規表示式如何優化 Pandas 對系列中多個子字串的過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!