Bagaimana untuk Mendapatkan Kesatuan Rentetan dengan Pandas GroupBy?

Patricia Arquette
Lepaskan: 2024-10-26 09:50:03
asal
365 orang telah melayarinya

How to Obtain a Union of Strings with Pandas GroupBy?

Panda GroupBy: Mendapatkan Kesatuan Rentetan

Dalam konteks Pandas, fungsi groupby menawarkan cara yang mudah untuk mengumpulkan data berdasarkan lajur tertentu dan melakukan pengiraan pada kumpulan yang terhasil. Walau bagaimanapun, apabila berurusan dengan lajur rentetan, fungsi pengagregatan lalai seperti sum() mungkin tidak selalu menghasilkan hasil yang diingini.

Andaikan kita mempunyai DataFrame dengan lajur 'A', 'B' dan 'C', di mana 'C' mengandungi nilai rentetan. Kita boleh menggunakan groupby("A")["C"].sum() untuk mendapatkan rentetan bercantum bagi setiap kumpulan:

<code class="python">print(df.groupby("A")["C"].sum())

# Output:
# A
# 1    Thisstring
# 2           is!
# 3             a
# 4        random
# Name: C, dtype: object</code>
Salin selepas log masuk

Untuk mendapatkan kesatuan rentetan (iaitu, rentetan unik dalam setiap kumpulan), kita boleh menggunakan fungsi tersuai yang berulang ke atas elemen lajur 'C' dan mencipta rentetan dipisahkan koma yang dikelilingi oleh pendakap.

<code class="python">def get_string_union(group):
    return "{%s}" % ', '.join(group['C'].unique())

df.groupby('A')['C'].apply(get_string_union)

# Output:
# A
# 1    {This, string}
# 2           {is, !}
# 3               {a}
# 4          {random}
# Name: C, dtype: object</code>
Salin selepas log masuk

Pendekatan lain melibatkan penggunaan fungsi guna bersama-sama dengan ungkapan lambda:

<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join(x))

# Output:
# A
# 1    {This, string}
# 2           {is, !}
# 3               {a}
# 4          {random}
# Name: C, dtype: object</code>
Salin selepas log masuk

Apabila digunakan pada DataFrame yang lebih besar, fungsi tersuai boleh digunakan untuk mengembalikan Siri yang mengandungi gabungan rentetan yang dikehendaki untuk 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)

# Output:
#   A         B               C
# A                             
# 1  2  1.615586  {This, string}
# 2  4  0.421821         {is, !}
# 3  3  0.463468             {a}
# 4  4  0.643961        {random}</code>
Salin selepas log masuk

Dengan menggunakan fungsi tersuai atau fungsi guna dengan ungkapan lambda, Pandas membenarkan kami memanipulasi dan mendapatkan hasil khusus daripada data yang mengandungi lajur rentetan. Kaedah yang dinyatakan di atas menyediakan cara yang mudah untuk menggabungkan rentetan unik dalam setiap kumpulan dan mengembalikannya dalam format yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kesatuan Rentetan dengan Pandas 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