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

Barbara Streisand
Lepaskan: 2024-10-24 18:35:04
asal
513 orang telah melayarinya

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       !
Salin selepas log masuk

Secara lalai, menggunakan jumlah() ke lajur "C" menghasilkan output berikut:

A
1    Thisstring
2           is!
3             a
4        random
dtype: object
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!