Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Menapis Baris Panda dengan Cekap Berdasarkan Berbilang Subrentetan, Termasuk Watak Istimewa?

Bagaimanakah Saya Boleh Menapis Baris Panda dengan Cekap Berdasarkan Berbilang Subrentetan, Termasuk Watak Istimewa?

Patricia Arquette
Lepaskan: 2024-11-28 09:09:15
asal
652 orang telah melayarinya

How Can I Efficiently Filter Pandas Rows Based on Multiple Substrings, Including Special Characters?

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

Kini, kita boleh menyemak setiap baris lajur sasaran (col) dengan cekap dengan cekap terhadap corak menggunakan str.contains:

col.str.contains(pattern, case=False)
Salin selepas log masuk

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

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!

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