Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Ungkapan Biasa Boleh Meningkatkan Prestasi Penapisan Substring Siri Panda?

Bagaimanakah Ungkapan Biasa Boleh Meningkatkan Prestasi Penapisan Substring Siri Panda?

DDD
DDDasal
2024-11-27 00:14:10624semak imbas

How Can Regular Expressions Improve Pandas Series Substring Filtering Performance?

Meningkatkan Prestasi untuk Penapisan Subrentetan Berbilang dalam Siri Pandas

Apabila cuba menapis baris di mana lajur rentetan tertentu mengandungi sekurang-kurangnya satu subrentetan daripada senarai yang diberikan, kaedah konvensional menggunakan np.logical_or.reduce() boleh menjadi tidak cekap untuk set data yang besar. Artikel ini meneroka pendekatan alternatif yang memanfaatkan ungkapan biasa untuk meningkatkan prestasi.

Penyelesaian Cadangan

Daripada menggunakan regex=False dalam str.contains(), kami menggunakan ungkapan biasa selepas melepaskan subrentetan yang disediakan dengan betul menggunakan re.escape(). Ini memastikan padanan literal dan bukannya tafsiran regex. Subrentetan yang terlepas kemudiannya digabungkan menjadi satu corak menggunakan paip regex (|).

Proses Penyamaran

Peringkat penyamaran menjadi gelung melalui siri, menyemak sama ada setiap rentetan sepadan dengan corak:

df[col].str.contains(pattern, case=False)

Prestasi Perbandingan

Menggunakan set data sampel dengan 100 subrentetan panjang 5 dan 50,000 rentetan panjang 20, kaedah yang dicadangkan mengambil masa lebih kurang 1 saat. Kaedah asal mengambil masa kira-kira 5 saat untuk data yang sama.

Nota

Penyelesaian ini menganggap senario "kes terburuk" di mana tiada padanan subrentetan. Dalam kes dengan perlawanan, prestasi akan dipertingkatkan lagi. Selain itu, pendekatan ini lebih cekap daripada kaedah awal, mengurangkan bilangan semakan yang diperlukan setiap baris.

Atas ialah kandungan terperinci Bagaimanakah Ungkapan Biasa Boleh Meningkatkan Prestasi Penapisan Substring Siri Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn