Menapis Bingkai Data Panda dengan Cekap untuk Berbilang Subrentetan
Menapis bingkai data untuk subrentetan ialah tugas biasa, tetapi ia boleh menjadi mahal dari segi pengiraan dengan set data yang besar. Cabaran ini ditambah lagi apabila berhadapan dengan aksara luar biasa dan padanan tidak peka huruf besar-kecil.
Masalah:
Memandangkan bingkai data Pandas dengan lajur rentetan, tapis baris dengan cekap supaya lajur mengandungi sekurang-kurangnya satu daripada senarai subrentetan, tanpa mengira kes dan aksara khas kehadiran.
Pendekatan Tidak Cekap:
Pendekatan awal melibatkan lelaran pada setiap subrentetan dalam senarai dan menggunakan kaedah str.contains() dengan regex=False dan case =Bendera palsu. Walaupun pendekatan ini mudah, ia boleh menjadi perlahan untuk set data yang besar.
Pendekatan Cekap:
Penyelesaian yang lebih cekap menggunakan ungkapan biasa untuk membina corak yang mengandungi semua yang dilepaskan subrentetan yang dicantumkan oleh paip regex |. Corak ini kemudiannya disemak terhadap setiap rentetan dalam lajur menggunakan kaedah str.contains().
import re lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*'] esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst) df[col].str.contains(pattern, case=False)
Pendekatan ini berprestasi jauh lebih pantas berbanding rentetan lelaran, terutamanya untuk set data besar dan subrentetan yang memerlukan pelarian.
Penilaian Prestasi:
Menggunakan set data dengan 50,000 rentetan dan 100 subrentetan, kaedah yang dicadangkan mengambil masa lebih kurang 1 saat untuk disiapkan, manakala kaedah lelaran mengambil masa kira-kira 5 saat. Masa bertambah baik jika mana-mana subrentetan sepadan dengan nilai lajur.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menapis Pandas DataFrame dengan Cekap untuk Berbilang Subrentetan, Mengendalikan Kes dan Watak Khas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!