Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Ungkapan Biasa Boleh Meningkatkan Prestasi Penapisan Substring Siri Panda?
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!