Kaedah guna dalam fungsi groupby panda, apabila digunakan pada objek kumpulan, membenarkan pengguna untuk melaksanakan operasi tersuai pada setiap kumpulan. Walau bagaimanapun, dalam senario tertentu, gelagat yang ditunjukkan oleh kaedah penggunaan boleh membingungkan, kerana ia nampaknya melaksanakan fungsi yang ditentukan dua kali pada kumpulan pertama dalam set data.
Dalam artikel ini, kita akan menyelidiki tentang sebab di sebalik tingkah laku ini dan teroka kaedah alternatif untuk mengubah suai kumpulan berdasarkan kes penggunaan tertentu.
Pelaksanaan dwi kaedah guna pada kumpulan pertama ialah pilihan reka bentuk yang disengajakan. Kaedah ini perlu menentukan bentuk data yang dikembalikan oleh fungsi yang ditentukan untuk menggabungkannya dengan berkesan dengan DataFrame sedia ada. Ia mencapai ini dengan menggunakan fungsi dua kali:
Walaupun seruan berganda ini mungkin kelihatan tidak perlu, ia adalah penting untuk memastikan integriti dan keserasian data yang dikembalikan dengan DataFrame.
Bergantung pada operasi yang diingini, pengguna boleh menggunakan fungsi ganti untuk mencapai hasil yang serupa tanpa menghadapi tingkah laku pelaksanaan berganda:
Dalam kebanyakan kes, pelaksanaan dwi permohonan pada kumpulan pertama tidak menimbulkan masalah yang ketara, terutamanya jika fungsi yang digunakan tidak mempunyai kesan sampingan. Walau bagaimanapun, jika fungsi itu mengubah suai DataFrame, adalah penting untuk memahami tingkah laku ini untuk mengelakkan akibat yang tidak diingini.
Untuk menangani perkara ini, pertimbangkan untuk memberikan hasil apply pada objek baharu dan bukannya mengubah suai DataFrame asal secara terus. Ini memastikan bahawa pelaksanaan berganda tidak memberi kesan kepada data sedia ada.
Sebagai contoh, kod berikut menunjukkan cara kaedah penggunaan boleh digunakan untuk mengubah suai DataFrame tanpa kesan sampingan:
<code class="python">import pandas as pd df = pd.DataFrame({'class': ['A', 'B', 'C'], 'count': [1, 0, 2]}) def checkit(group): print(group) df.groupby('class', group_keys = True).apply(checkit)</code>
Kod ini akan mencetak setiap kumpulan dua kali disebabkan oleh pelaksanaan dua kali permohonan. Walau bagaimanapun, ia tidak akan mengubah suai df asal. Sebaliknya, kod berikut akan menambah lajur kiraan untuk setiap kumpulan:
<code class="python">import pandas as pd df = pd.DataFrame({'class': ['A', 'B', 'C'], 'count': [1, 0, 2]}) def checkit(group): print(group) df.groupby('class', group_keys = True).apply(checkit)</code>
Walaupun permohonan masih akan mencetak setiap kumpulan dua kali, ia hanya akan menambah kiraan sekali untuk setiap kumpulan, seperti yang ditunjukkan oleh df yang dikemas kini.
Atas ialah kandungan terperinci Mengapa Kaedah Pandas\' GroupBy.apply Melaksanakan Dua Kali pada Kumpulan Pertama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!