Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Menapis Pandas DataFrame dengan Cekap untuk Berbilang Subrentetan, Mengendalikan Kes dan Watak Khas?

Bagaimanakah Saya Boleh Menapis Pandas DataFrame dengan Cekap untuk Berbilang Subrentetan, Mengendalikan Kes dan Watak Khas?

Barbara Streisand
Lepaskan: 2024-12-05 16:50:12
asal
241 orang telah melayarinya

How Can I Efficiently Filter a Pandas DataFrame for Multiple Substrings, Handling Case and Special Characters?

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan