Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggabungkan Rentetan dalam Kumpulan dalam Pandas DataFrame Menggunakan `groupby`?
Pandas groupby: Mendapatkan Rangkaian Rentetan
Apabila bekerja dengan DataFrame di mana salah satu lajur mengandungi rentetan, fungsi sum() lalai mungkin tidak selalu memberikan hasil yang diinginkan. Dalam senario sedemikian, di mana matlamatnya adalah untuk menggabungkan rentetan untuk setiap kumpulan, berikut ialah penjelasan dan penyelesaian yang komprehensif.
Pertimbangkan DataFrame berikut:
A B C 0 1 0.749065 This 1 2 0.301084 is 2 3 0.463468 a 3 4 0.643961 random 4 1 0.866521 string 5 2 0.120737 !
Secara lalai, menggunakan jumlah() ke lajur "C" menghasilkan output berikut:
A 1 Thisstring 2 is! 3 a 4 random dtype: object
Untuk mendapatkan output yang diingini di mana rentetan digabungkan untuk setiap kumpulan, terdapat beberapa pendekatan:
Menggunakan aplikasi () Fungsi:
Satu kaedah ialah menggunakan fungsi tersuai pada objek kumpulan mengikut. Fungsi ini boleh menggabungkan rentetan dalam setiap kumpulan.
<code class="python">def f(x): return Series(dict(A = x['A'].sum(), B = x['B'].sum(), C = "{%s}" % ', '.join(x['C']))) df.groupby('A').apply(f)</code>
Sebagai alternatif:
Anda boleh mencapai hasil yang sama dengan menggunakan fungsi apply() dan lambda secara eksplisit:
<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join(x))</code>
Menggunakan Logik Tersuai:
Jika penyesuaian diperlukan, seperti mengalih keluar rentetan kosong atau menggunakan pembatas tertentu, anda boleh melaksanakan logik anda sendiri dalam fungsi lambda.
Sebagai contoh, untuk mengalih keluar rentetan kosong:
<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join([c for c in x if c]))</code>
Pertimbangan Prestasi:
Perhatikan bahawa penggunaan fungsi tersuai boleh menjadi lebih perlahan daripada menggunakan fungsi sum() terbina dalam. Oleh itu, adalah disyorkan untuk mempertimbangkan kesan prestasi berdasarkan keperluan khusus anda.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Rentetan dalam Kumpulan dalam Pandas DataFrame Menggunakan `groupby`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!