首頁 > 後端開發 > Python教學 > 如何根據多個子字串(包括特殊字元)有效過濾 Pandas 行?

如何根據多個子字串(包括特殊字元)有效過濾 Pandas 行?

Patricia Arquette
發布: 2024-11-28 09:09:15
原創
634 人瀏覽過

How Can I Efficiently Filter Pandas Rows Based on Multiple Substrings, Including Special Characters?

Pandas:有效過濾多個子字串的行

基於多個子字串過濾pandas 資料幀可能具有挑戰性,特別是當子字串包含異常字元時。本文提供了一種結合使用正規表示式和 pandas 字串匹配函數的有效解決方案。

提供的子字串清單 (lst) 包含包含常規字元和特殊字元的元素。為了從字面上匹配它們,我們可以使用 re.escape 轉義這些特殊字符,並使用正則表達式管道 (|) 連接它們。

esc_lst = [re.escape(s) for s in lst]
pattern = '|'.join(esc_lst)
登入後複製

現在,我們可以有效地檢查目標列(col) 的每一行使用str.contains 反對模式:

col.str.contains(pattern, case=False)
登入後複製

這種方法明顯優於使用巢狀循環和多個str.contains的原始解決方案

效能比較

使用包含50,000 個20 個字元的字串和100 個5 個字元的子字串的資料集,建議的方法大約需要1 秒:

%timeit col.str.contains(pattern, case=False)
1 loop, best of 3: 981 ms per loop
登入後複製

相較之下,原始方法在同一時間大約需要 5秒數據集。

注意: 時間表示沒有匹配的最壞情況。當存在匹配時,所提出的方法將表現得更好,因為一旦找到匹配,它將停止檢查子字串。

以上是如何根據多個子字串(包括特殊字元)有效過濾 Pandas 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板