Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menapis Baris Panda dengan Cekap Berdasarkan Berbilang Subrentetan, Termasuk Watak Istimewa?
Panda: Menapis Baris dengan Cekap untuk Berbilang Subrentetan
Menapis bingkai data panda berdasarkan berbilang subrentetan boleh mencabar, terutamanya apabila subrentetan mengandungi aksara luar biasa . Artikel ini menyediakan penyelesaian yang cekap menggunakan gabungan fungsi pemadanan rentetan regex dan panda.
Senarai subrentetan (lst) yang disediakan mempunyai elemen dengan kedua-dua aksara biasa dan khas. Untuk memadankannya secara literal, kita boleh melepaskan watak istimewa ini menggunakan re.escape dan menyertainya menggunakan paip regex (|).
esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst)
Kini, kita boleh menyemak setiap baris lajur sasaran (col) dengan cekap dengan cekap terhadap corak menggunakan str.contains:
col.str.contains(pattern, case=False)
Pendekatan ini dengan ketara mengatasi penyelesaian asal, yang menggunakan gelung bersarang dan berbilang str.mengandungi panggilan.
Perbandingan Prestasi
Menggunakan set data dengan 50,000 rentetan 20 aksara dan 100 subrentetan 5 aksara, kaedah yang dicadangkan mengambil masa kira-kira 1 saat:
%timeit col.str.contains(pattern, case=False) 1 loop, best of 3: 981 ms per loop
Sebagai perbandingan, pendekatan asal mengambil masa lebih kurang 5 saat pada set data yang sama.
Nota: Pemasaan mewakili senario terburuk di mana tiada padanan. Kaedah yang dicadangkan akan berprestasi lebih baik apabila terdapat padanan, kerana ia akan berhenti menyemak subrentetan apabila perlawanan ditemui.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menapis Baris Panda dengan Cekap Berdasarkan Berbilang Subrentetan, Termasuk Watak Istimewa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!