Bagaimanakah Saya Boleh Menapis Siri Panda dengan Cekap untuk Berbilang Subrentetan?

Linda Hamilton
Lepaskan: 2024-11-23 18:17:20
asal
273 orang telah melayarinya

How Can I Efficiently Filter a Pandas Series for Multiple Substrings?

Penapisan Panda yang Cekap untuk Berbilang Subrentetan dalam Siri

Menentukan sama ada siri mengandungi mana-mana daripada beberapa subrentetan ialah tugas biasa dalam analisis data. Semasa menggunakan logik atau untuk menggabungkan operasi str.contains individu menawarkan penyelesaian yang mudah, ia boleh menjadi tidak cekap untuk senarai subrentetan panjang dan bingkai data yang besar.

Untuk mengoptimumkan tugas ini, pertimbangkan untuk menggunakan pendekatan ekspresi biasa (regex). Dengan membungkus subrentetan dalam corak regex, kami boleh memanfaatkan fungsi padanan rentetan yang cekap panda. Khususnya, selepas melarikan diri daripada mana-mana aksara khas dalam subrentetan, kita boleh membina corak regex dengan menggabungkan subrentetan menggunakan aksara paip (|):

import re

esc_lst = [re.escape(s) for s in lst]
pattern = '|'.join(esc_lst)
Salin selepas log masuk

Dengan corak ini, kita boleh menapis siri menggunakan str. mengandungi dan padanan tidak sensitif huruf besar dan kecil:

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

Pendekatan ini menawarkan prestasi yang lebih baik, terutamanya untuk bingkai data yang besar. Pertimbangkan contoh berikut:

from random import randint, seed

seed(321)

# 100 substrings of 5 characters
lst = [''.join([chr(randint(0, 256)) for _ in range(5)]) for _ in range(100)]

# 50000 strings of 20 characters
strings = [''.join([chr(randint(0, 256)) for _ in range(20)]) for _ in range(50000)]

col = pd.Series(strings)
esc_lst = [re.escape(s) for s in lst]
pattern = '|'.join(esc_lst)
Salin selepas log masuk

Menggunakan pendekatan yang dioptimumkan ini, operasi penapisan mengambil masa lebih kurang 1 saat untuk 50,000 baris dan 100 subrentetan, jauh lebih pantas daripada kaedah yang diterangkan dalam soalan asal. Perbezaan prestasi menjadi lebih ketara untuk senarai bingkai data dan subrentetan yang lebih besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menapis Siri Panda dengan Cekap untuk Berbilang Subrentetan?. 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