Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencapai KUMPULAN SQL DENGAN MEMPUNYAI Kefungsian dengan Penapisan Bersyarat Pandas?

Bagaimana untuk Mencapai KUMPULAN SQL DENGAN MEMPUNYAI Kefungsian dengan Penapisan Bersyarat Pandas?

Patricia Arquette
Patricia Arquetteasal
2025-01-10 17:35:41511semak imbas

How to Achieve SQL's GROUP BY HAVING Functionality with Pandas Conditional Filtering?

Penapisan kumpulan data Panda: setara dengan SQL's GROUP BY HAVING

Dalam analisis data, selalunya diperlukan untuk menapis data berdasarkan syarat yang digunakan pada kumpulan data. Dalam SQL, klausa HAVING membenarkan penapisan bersyarat jenis ini. Dalam Pandas, kefungsian serupa boleh dicapai menggunakan gabungan operasi kumpulan mengikut dan penapis.

Untuk menggunakan penapis pada data terkumpul dalam Pandas, anda boleh menggunakan kaedah penapis yang disediakan dalam objek kumpulan mengikut. Kaedah ini menerima fungsi sebagai input dan menggunakannya untuk setiap kumpulan. Jika fungsi mengembalikan True untuk kumpulan, kumpulan itu dikekalkan jika tidak, ia dikecualikan.

Pertimbangkan contoh berikut:

<code class="language-python">import pandas as pd

df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])

# 按列 A 分组数据框
g = df.groupby('A')

# 过滤以包含超过 1 行的组
filtered_df = g.filter(lambda x: len(x) > 1)

print(filtered_df)</code>

Output:

<code>   A  B
0  1  2
1  1  3</code>

Dalam contoh ini, operasi groupby mencipta objek kumpulan untuk setiap nilai yang berbeza dalam lajur A. Kaedah penapis kemudian digunakan pada setiap objek kumpulan dan fungsi len(x) digunakan untuk menentukan sama ada kumpulan itu harus dikekalkan atau dikecualikan. Dalam contoh ini, kumpulan dengan lebih daripada 1 baris dikekalkan, menghasilkan bingkai data yang ditapis.

Anda juga boleh mencipta fungsi penapis yang lebih kompleks, asalkan ia mengembalikan nilai boolean. Contohnya, untuk menapis kumpulan berdasarkan jumlah nilai lajur B, anda akan menggunakan:

<code class="language-python">filtered_df = g.filter(lambda x: x['B'].sum() == 5)</code>

Perhatikan bahawa mungkin terdapat pepijat yang berpotensi di mana anda tidak boleh mengakses lajur yang digunakan untuk mengumpulkan dalam fungsi penapis. Satu penyelesaian ialah mengumpulkan bingkai data secara manual menggunakan nama lajur.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai KUMPULAN SQL DENGAN MEMPUNYAI Kefungsian dengan Penapisan Bersyarat Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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