Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggabungkan Rentetan dalam Kumpulan dalam Pandas DataFrame Menggunakan `groupby`?

Bagaimana untuk Menggabungkan Rentetan dalam Kumpulan dalam Pandas DataFrame Menggunakan `groupby`?

Barbara Streisand
Barbara Streisandasal
2024-10-24 18:35:04578semak imbas

How to Concatenate Strings within Groups in a Pandas DataFrame Using `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!

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